Microsoftが提供するインタラクティブSDKを試しましたか?それは私を助けました。
に配置してコントロールをMapLayer
配置するだけでよいようです。Pushpin
添付プロパティを使用して、MapLayer.Position
そのマップレイヤー内のすべてのものをマップに固定します。そのため、ユーザーが地図を移動すると、それが表示されます。この添付プロパティはLocation
、経度(double)と緯度(double)の両方の値を含むBingMapコントロール独自のタイプです。上記の場所のコレクションをバインドする必要がある場合MapItemsControl
は、バインドの内部を使用してMapLayer
、そのItemsSource
プロパティをコレクションにバインドできます。データテンプレートを作成することもできます。テンプレートルートは、MapLayer.Position
添付のプロパティを使用してマップ上の位置を指定する必要があることに注意してください。これは、任意のLocation
型の値にバインドできます。
<UserControl x:Class="MapControlInteractiveSdk.Tutorials.DataBinding.TutorialMapItemsControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:t="clr-namespace:MapControlInteractiveSdk.Tutorials.DataBinding"
xmlns:m="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl">
<UserControl.Resources>
<DataTemplate x:Key="LogoTemplate">
<!-- This doesn't have to be a pushpin control - it can be anything just apply
the "m:MapLayer.Position" property to whatever is the root of the
template.
-->
<m:Pushpin m:MapLayer.Position="{Binding Location}" />
</DataTemplate>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<m:Map CredentialsProvider="Your Key">
<m:MapLayer>
<m:MapItemsControl x:Name="ListOfItems"
ItemTemplate="{StaticResource LogoTemplate}"
ItemsSource="{Binding MyLocalizedEntities}">
</m:MapItemsControl>
</m:MapLayer>
<m:MapLayer>
<!-- You can have content in multiple layers: Latter layers are infront of former ones. -->
</m:MapLayer>
</m:Map>
</Grid>
</UserControl>