Windows phone 8.1 Windows Phone 8.1(运行时)OnMapTapped事件中的附加数据

Windows phone 8.1 Windows Phone 8.1(运行时)OnMapTapped事件中的附加数据,windows-phone-8.1,bing-maps,Windows Phone 8.1,Bing Maps,我正在尝试创建一个Windows Phone 8.1(运行时)应用程序,该应用程序上有地图控件。我想向OnMappedTapped事件附加附加数据,或者在有人单击MapIcon时获取指定位置ID的方法。这可能吗 是的。如果要在有人单击MapIcon(图钉)时执行某些操作,请在地图上添加一个点击,然后使用map.FindMapElementsAtOffset方法搜索与接触点相交的元素: 或Map.FindSubElementsForTouch定位方法: 当涉及到将数据存储或关联到图钉时,我喜欢将数

我正在尝试创建一个Windows Phone 8.1(运行时)应用程序,该应用程序上有地图控件。我想向OnMappedTapped事件附加附加数据,或者在有人单击MapIcon时获取指定位置ID的方法。这可能吗

是的。如果要在有人单击MapIcon(图钉)时执行某些操作,请在地图上添加一个点击,然后使用map.FindMapElementsAtOffset方法搜索与接触点相交的元素:

或Map.FindSubElementsForTouch定位方法:

当涉及到将数据存储或关联到图钉时,我喜欢将数据存储在标准标记属性中,因为我已经用WPF和Silverlight做了一段时间了。您会注意到MapIcon/MapElement类没有标记属性,但是它们是DependencyObjects,这意味着我们可以轻松地向这些类添加自定义属性。下面是我在WP应用程序中经常使用的一个简单扩展,用于向这些类添加标记属性

public static class MapElementExt
{
    public static readonly DependencyProperty TagProperty = DependencyProperty.Register("Tag", typeof(object), typeof(MapElement), new PropertyMetadata(null));
}
然后可以按如下方式设置此值:

pushpin.SetValue(MapElementExt.TagProperty, MyPinData);
MapControl.SetLocation(pushpin, MyGeopoint);
就个人而言,当涉及图钉时,我通常不会弄乱MapIcon/MapElement类,而只是为图钉创建一个UIElement。通过这样做,我可以轻松地对创建图钉有更多的控制,也可以轻松地添加点击事件。可以指定UIElement的位置,如下所示:

pushpin.SetValue(MapElementExt.TagProperty, MyPinData);
MapControl.SetLocation(pushpin, MyGeopoint);
然后将图钉添加到Map.Children属性

如果要通过触摸事件获取地图上随机选择点的坐标,可以从点击事件获取像素坐标,并通过map.GetLocationFromOffset方法传递它们。例如:

MyMap.Tapped += (s, e) =>
{
    Geopoint loc;
    MyMap.GetLocationFromOffset(e.GetPosition(MyMap), out loc);
};

一旦我添加了pushpin.SetValue(maplementext.TagProperty,MyPinData);如何在OnMapTapped事件中检索标记值?或者如果UIElement是一个更好的选择,您是否有指向sample的链接?尝试类似的方法:var val=(发送者作为UIElement.GetValue(maplementExt.TagProperty);如果(val!=null)var MyPinData=val作为MyObjectType;我一定错过了什么,因为它不起作用。mapIcon.SetValue(MapElementExt.TagProperty,location.LocationId);然后在我的映射中点击var val=(发送者作为UIElement.GetValue(MapElementExt.TagProperty);但是val是空的。我没有做(作为UIElement)尝试(作为MapElement),而是做了更多的研究,最终按照您建议的那样为我的图钉创建UIElement。你愿意看看我的代码以确保它是正确的吗?谢谢。