Maps コントロールは、多くのレイヤーで用意されています。 マップは複数のレイヤーを格納できます。
MapItemsLayer は、マップ上に項目を表示する最も簡単な方法です。これは ItemsControlを継承するため、UIElement オブジェクトまたは汎用データオブジェクトの追加を直接サポートします。また、それらのオブジェクトをビジュアル項目に変換するために、DataTemplate が使用されます。 MapItemsLayer に追加される要素は、MapCanvasクラスのLongLatProperty フィールドを使って配置されます。
サンプルを紹介します。
これは、XAML で Maps コントロールを作成し、その Layers コレクションに MapItemsLayer を追加します。Layers コレクションにはレイヤをいくつでも追加でき、それらのレイヤは重ねて表示されます。
この項目レイヤには、1つの項目として、緯度/経度(40.4587, -79.9247)の位置に楕円を追加しています。これらの数値は、XAML では逆になっていることに注意してください。これは、LatLong 値が、経度に対応する X 値と緯度に対応する Y 値から成る Point 構造体で表されるためです(これは、マップと X/Y 軸の通常の配置に一致しています)。
この例では、MapCanvas クラスのPinpointProperty 添付プロパティが使用されていることもわかります。このプロパティは、要素上のどのポイントを LatLong プロパティで設定された地理座標に置くかを設定します。この例では、楕円の中央が LatLong 位置に来るように、Pinpoint が(10, 10)に設定されています。
2番目の例を紹介します。今回は、コードで C1Maps コントロールを作成し、そのコントロールにデータを設定します。次のクラスを使用します。
ItemsSource に Place クラスのインスタンスを格納し、ItemTemplate を Page のリソースで定義された次の DataTemplate に設定します。
この DataTemplate は、MapCanvas.LatLong を項目で定義された LatLong にバインドし、TextBlock に Place の Name を表示します。
ItemTemplate と ItemsSource を使用すると、データベースから簡単にデータをロードできます。データオブジェクトのコレクションを返す Web サービスを設定し、コレクションを ItemsSource として設定し、適切な値をバインドする DataTemplate を作成するだけです。