0

我为 windows phone 7 (bing maps) 创建应用程序,我需要添加如下内容:

  • 当我点击地图时,我想在那里添加图钉,但我还需要向该图钉添加一些信息(如名称和描述)

我怎样才能做到这一点?或者我在哪里可以找到一些教程?

4

1 回答 1

0

您可以订阅地图的 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 属性的视图模型。

于 2013-08-09T18:04:58.033 回答