我为 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 方法,您可以拥有一组要添加到的对象。
xml:
<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 属性的视图模型。