Windows phone 7 (bing maps) 用のアプリを作成していますが、次のようなものを追加する必要があります。
- マップをタップすると、そこに画鋲を追加したいのですが、その画鋲にいくつかの情報 (名前や説明など) を追加する必要もあります
これどうやってするの?または、そのためのチュートリアルはどこにありますか?
Windows phone 7 (bing maps) 用のアプリを作成していますが、次のようなものを追加する必要があります。
これどうやってするの?または、そのためのチュートリアルはどこにありますか?
マップの Tap イベントをサブスクライブして画鋲を追加できます。
XAML:
<Maps:Map x:Name="Map" CredentialsProvider="Your-Creds" Tap="Map_OnTap" />
コード:
private void Map_OnTap(object sender, GestureEventArgs e)
{
GeoCoordinate location;
if (Map.TryViewportPointToLocation(e.GetPosition(Map), out location))
{
Map.Children.Add(new Pushpin
{
Location = location,
Background = new SolidColorBrush(Colors.Blue),
Content = "Hello world"
});
}
}
MVVM アプローチが必要な場合は、追加するオブジェクトのコレクションを持つことができます。
Xaml:
<Maps:Map x:Name="Map" CredentialsProvider="Your-creds"
Tap="Map_OnTap">
<Maps:MapItemsControl ItemsSource="{Binding Locations}">
<Maps:MapItemsControl.ItemTemplate>
<DataTemplate>
<Maps:Pushpin Location="{Binding Location}" Content="{Binding Name}"
Background="{StaticResource PhoneAccentBrush}">
</Maps:Pushpin>
</DataTemplate>
</Maps:MapItemsControl.ItemTemplate>
</Maps:MapItemsControl>
</Maps:Map>
コード:
public ObservableCollection<MapLocation> Locations { get; private set; }
private void Map_OnTap(object sender, GestureEventArgs e)
{
GeoCoordinate location;
if (Map.TryViewportPointToLocation(e.GetPosition(Map), out location))
{
Locations.Add(new MapLocation
{
Location = location,
Name = "Hello world"
});
}
}
public class MapLocation
{
public GeoCoordinate Location { get; set; }
public string Name { get; set; }
}
この例では、ページの DataContext をそれ自体に設定するだけです。より良い方法は、ページの DataContext を Locations プロパティを持つビュー モデルに設定することです。