Map Appコンテスト
この連載では紹介していませんでしたが、Bing Map Appのコンテスト、King of Bing Maps Challenge が公式で開催されており、先日その結果が発表 されました。応募作品はすでにBing Maps のMap App Galleryから利用できます(図1 ) 。
図1 Map App Gallery
今回はこのコンテストの受賞作品と応募されたMap Appを一緒にみていきましょう。Map App作成の参考にもなると思います。
Taxi Fare Calculator
まず1位に輝いたのは、Taxi Fare Calculator (図2 )というMap Appです。名前の通りタクシーの料金を計算(概算)してくれるアプリケーションです。余談ですがMap Appのアプリケーション名は、名前から機能が想像できるほうがよさそうですね。
図2 Taxi Fare Calculator
使い方は、まず、パネルからSelect Regionから大まかな地域(米国の州など)を選択します。当然ながら日本は対応していません。次に、現在地と目的地となる2か所を、住所または郵便番号で入力します。最後にボタンをクリックすると上図のように地図上にはルート結果、パネル上には、距離や時間と料金が表示されます。
このMap AppではBing MapsのWebサービス、Bing Maps SOAP Services も活用して、住所・郵便番号から経緯度の取得、2点間のルート探索を行っているようです。この SOAP Servicesは、Map AppのContractを利用してサービスのエンドポイント(URL)を参照できます。次のようにMap Appのプラグインで宣言することで使用できます。
[ ImportSingle ( "Microsoft/CredentialsGrantingContract" , ImportLoadPolicy . Synchronous )]
public CredentialsGrantingContract CredentialsGrantingContract { get ; set ; }
このMap Appで使用しているのは、GeocodeとRouteサービスです。以下のプロパティで取得できますが、固定の値ですので、わざわざContractを使用する必要もないでしょう。
var geocodeEndpoint = CredentialsGrantingContract . GeocodeEndpoint ;
var routeEndpoint = CredentialsGrantingContract . RouteEndpoint ;
通常このサービスの利用にはBing Maps 開発者アカウントとBing Maps Keyという認証キーが必要になりますが、このContractを利用すると使い捨ての認証キーを取得できます。
plugin . CredentialsGrantingContract . CreateCredentials ( plugin . Token , Created );
サービスの実際の利用方法については、今回は割愛します。Visual Studioを利用するとSOAPを利用したクラスを自動生成できまずが、そのままのコードではMap Appで使えないようで少し編集やコツがいるようです。
GeoSales Tax
第2位のMap Appは、GeoSales Tax (図3 )という米国の各州の税率を表示するアプリケーションです。
図3 GeoSales Tax
上図のように税率によって色を変えて州の領域を表示しています。住所または郵便番号から税率を表示し、またその場所へ移動します。ズームすると領域が細かくなり綺麗に区分けされています。
このMap Appも先ほどのSOAP Servicesを利用しているようです。その他の情報は外部サーバーから随時取得しているようです。
Ricky’s Data Viewer
第3位のMap Appは、Ricky’s Data View (図4 )です。このMap Appは、位置情報を持った形式のファイルを読み込み、地図上に表示させることができます。対応している形式は、Shapefile(.shp)とその属性ファイル(.dbf)およびGeoRss、SQL Server 2008のデータ型のテキストです。いずれもサンプルファイルへのリンクやサンプルテキストがあるので、すぐに試せます。
図4 Ricky’s Data Viewer
Silverlightアプリケーションは、ローカルにあるファイルでも、ファイルを開くダイアログを経由すれば読み取ることができるので、これをうまく利用していますね。また各種Map Appのエンティティを活用しています。
その他の応募作品
その他の応募作品もMap App Galleryで使用できます。それらも見てみましょう。
Microsoft Regional Directors(図5 )は、世界にいるMicrosoft Regional Directorと呼ばれるマイクロソフトと開発者コミュニティをリンクする、開発者やトレーナーなどのエキスパートです。その方たちの地域情報から地図上に表示し、BlogやTwitterなどにアクセスできます。
図5 Microsoft Regional Directors
情報は少な目で、リアルタイムに情報を更新する必要もないため、各経緯度やアイテムの情報は、Map Appプラグイン内部にリソースとして持っているのかもしれません。リソースから情報を取得するプラグインは、第2回 で紹介しています。
Festivals de Théâtre en France 2010(図6 )は、フランスの特定の劇場のみを表示するMap Appです。こちらも位置情報は、プラグイン内に保持しているようです。特徴としては、Bing Mapsのルート探索やリスト作成機能と連携しています。リストボックスや、プッシュピンのポップアップにある「Directions」と「Save」から確認できます。
図6 Festivals de Théâtre en France 2010
また、フランス語が使用されているわけですが、ほかのMap Appと同様に登録されています。もしかすると日本語Map Appも登録可能かもしれませんね。ただし、開発チームは理解できないと思いますので、英語の説明も必要でしょう。また、現在はBeta版であるため、今後、Map Appを言語でフィルタリングすることも可能になるかもしれません。
World of Football(図7 )は、サッカーの試合状況を表示します。パネルに試合状況を表示し、試合を行っているスタジアムの場所に一定期間で移動します。見た目はかなり凝っている印象で、チームのエンブレムやスタジアムの写真も表示されます。
図7 World of Football
試合の情報は、Scores Pro のフィードを利用しているようです。ただし、直接参照しているわけではなく、Yahoo Pipes を通して利用しています。Pipesでは、前回 紹介したclientaccesspolicy.xmlにより、Silverlightアプリケーションからのアクセスを許可しているためMap Appからも利用できます。これはよいマッシュアップの例ではないでしょうか。
Map Appだけの問題かは判断できなかったのですが、Map Appの表示を終了したあとも自動で地図が移動されてしまう問題を確認しています。自動で移動してしまうようなMap Appを作成する場合は、このあたりの動作も考慮しておく必要がありそうです。
Apo-AT(図8 )は、オーストリアの特定の薬局を表示するMap Appです。位置情報などはプラグイン内部に持っているようです。
図8 Apo-AT
大きな特徴はありませんが、プッシュピンのポップアップの中やパネルのリスト中の項目に、画像が表示されているものもあります。ポップアップやリストの項目は、XAMLやコーディングにより自由にレイアウトできるため、画像情報の有無で表示をこのように変化させることもできます。
最後は、Random Location(図9 )です。名前が示すように、ランダムな場所へ移動するだけのMap Appです。ただし海上は除いてくれるようです。
図9 Random Location
海上の判定はどうしているのかは不明ですが、単純でわかりやすいアプリケーションですね。
おわりに
コンテストの応募作品をみてきましたが、いかがでしたか。残念ながらかなり応募数が少なかったようです。その影響もあると思いますが、どの作品もこれまでの連載内容と少しの知識があれば、同様のタイプのアプリケーションは作成できそうですね。意外とMap App登録はハードルが低いことも伺いしれましたのではないかと思います。ぜひ何かアイデアをプラスしてMap App登録に挑戦してみてください。次回ももう少しだけMap Appについて紹介する予定です。