レイヤー上に追加しています。
上記コードでは、地図をクリックした地点にプッシュピンを追加しています。これを元にいろいろと変更を加えていきます。
さまざまなプッシュピン
プッシュピンは簡単に見た目の変更も可能です。
Colorプロパティで色の変更(図2)ができます。
また、メソッドの引数にテキストを指定すると、その文字をプッシュピン上に表示できます(図3)。日本語だと1文字がバランスよく表示されます。最大3文字まで表示可能です。また、HighlightedStateプロパティを使用するとアニメーションで目立たせることができます。
アイコンの表示もできます(図4)。Entityの内容からアイコン画像を設定したUIElementオブジェクトを返すメソッドを用意して、CreateStandardPushpinメソッドに指定します。
さらに、メソッド名CreateStandardPushpinにあるように、Standardでないプッシュピンを作るメソッドも用意されています。
CreateMediaPushpinメソッドを使用すると、動画像をプッシュピンとして使用できます(図5)。アイコンを指定したときと同じようにUIElementオブジェクト返すメソッド引数に指定します。
CreateMiniPushpinメソッドを使用すると、小さいプッシュピンを作れます(図6)。
クラスタリング
多数のプッシュピンを表示した場合、ズームレベルによってはプッシュピンが重なって表示されてしまいます。クラスタリング機能を使うと、プッシュピンが密集して表示されるようなとき、それらをまとめてひとつプッシュピンとして表示し、クリック動作で各プッシュピンを選択できるようになります(図7、図8)。プラス記号が付いたものがクラスタリングされたプッシュピンです。
このクラスタリングを行うには、EntityClusteringContractというContractを使用します。これまでと同様にプロパティを定義します。
そして、作成したエンティティをRegisterメソッドに渡すだけです。
こうすると、登録したプッシュピンは、必要なときに自動でクラスタリングされ表示されます。逆に、細かな制御はできません。
ポリライン
次にポリライン(polyline)を使ってみましょう(図9)。ポリラインを使用すると地図上に線を引くことができます。ルート探索などで使用されるものですね。
このポリラインもプッシュピンと同様にエンティティのひとつです。プッシュピンではある1点を指すものでしたが、ポリラインでは複数の地点を指定して、線を描画します。
プッシュピンのようにContractを使用するのではなく、PolylinePrimitveオブジェクトを直接生成します。以下にコードを示します。
StrokeThicknessプロパティやStrokeDashArrayプロパティを使用すると、線の太さや点線の描画なども可能です(図10)。各プロパティの型はMap App SDKライブラリーに含まれるものではなくSilverlightの標準で用意されているものですので、一般的方法で描画が可能です。
ポリゴン
次はポリゴン(polygon)です(図11)。ポリゴンを使うと地図上の領域を示すことができます。ポリラインのように複数地点を指定して形成しますが、線ではなく閉じた面として表示されます。
ポリラインと同じように直接、PolygonPrimitiveオブジェクトを生成して使います。コードは次のようになります。
Brushを変更すればグラデーションや半透明の描画も、通常のSilverlightアプリケーションと同様に可能です(図12)。
ダイアログの表示
最後に、エンティティではないですが、ダイアログ(図13)の表示方法についても紹介しておきます。パネルのコントロールやエンティティをクリックしたときなどに、何かしらのダイアログを表示したい場合、ModalDialogContractが使えます。
使い方は、次のようにプロパティを定義して、Openメソッドを呼ぶだけです。
たとえば、プッシュピンのクリック時にダイアログを表示したい場合次のように記述します。
Openメソッドの引数は、ダイアログのタイトルとコンテンツ部分です。上記では単にTextBlockを指定していますが、ユーザーコントロールを用意して自由な内容を表可能です。
おわりに
今回はここまでです。いかがでしたでしょうか。地図系アプリの基本的な機能とも言える、プッシュピンや線や領域の描画について紹介しました。
今回の内容を、Bing Maps Silverlight
Controlと比較したとき、表示できるものがMap Appのほうが制限されています。Silverlight ControlはSilverlight のコントロールを自由に配置でき、ズームに併せて大きさの変化する動画像の貼り付けなども可能です。一方、プッシュピンに関しては、両方対応していますが、Map Appのほうが選択時の見た目の変化に対応していたり、クラスタリングが可能だったりと機能が豊富です。
このように似たソリューションでも違いがあり、Map Appを作成するときもSilverlight Controlの機能も調べてみると、両者の違いが見え、より良いアプリ開発につながるかも知れませんね。