我正在嘗試創建一個Windows Phone 8.1(運行時)應用程序,該應用程序上有一個地圖控件。我想將附加數據附加到OnMappedTapped事件上,或者在有人點擊MapIcon時獲取分配的位置ID。這可能嗎?Windows Phone 8.1(運行時)OnMapTapped事件中的其他數據
回答
是的。如果您想在某人點擊MapIcon(圖釘)時做某些事情,請在地圖上添加一個水龍頭,然後使用Map.FindMapElementsAtOffset方法搜索與觸摸點相交的元素:http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.controls.maps.mapcontrol.findmapelementsatoffset.aspx
或者Map .FindSubElementsForTouchTargeting方法:http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.uielement.findsubelementsfortouchtargeting.aspx
當涉及到將數據存儲或關聯到圖釘時,我喜歡將數據存儲在標準Tag屬性中,因爲這是WPF和Silverlight一段時間的工作。您會注意到MapIcon/MapElement類沒有Tag屬性,但它們是DependancyObjects,這意味着我們可以輕鬆地爲這些類添加自定義屬性。這是我經常在WP應用程序中爲這些類添加Tag屬性的簡單擴展。
public static class MapElementExt
{
public static readonly DependencyProperty TagProperty = DependencyProperty.Register("Tag", typeof(object), typeof(MapElement), new PropertyMetadata(null));
}
然後,您可以設置這個值是這樣的:
pushpin.SetValue(MapElementExt.TagProperty, MyPinData);
個人而言,當涉及到圖釘我通常不惹的MapIcon/MapElement類,只是創建我的圖釘一個的UIElement 。通過這樣做,我可以輕鬆地創建我的圖釘,並且還可以輕鬆添加Tap事件。您可以指定這樣的UIElement的位置:
MapControl.SetLocation(pushpin, MyGeopoint);
然後將圖釘添加到Map.Children屬性中。
如果要通過觸摸事件獲取地圖上隨機選擇的點的座標,可以從點擊事件中獲取像素座標,並通過Map.GetLocationFromOffset方法傳遞它們。例如:
MyMap.Tapped += (s, e) =>
{
Geopoint loc;
MyMap.GetLocationFromOffset(e.GetPosition(MyMap), out loc);
};
- 1. Windows Phone 8.1運行時應用程序
- 2. Windows Phone 8.1運行時使用推針
- 3. 如何將項目從Windows Phone 8.1 Silverlight轉換爲Windows Phone 8.1運行時
- 4. Windows Phone 8.1接收短信事件
- 5. 在windows phone 8.1運行時檢測SIM卡和按鈕按下事件
- 6. 爲Windows Phone 8.1運行時覆蓋Prism中的後退按鈕
- 7. 在Windows Phone 8.1運行時將BitmapImage轉換爲byte []數組運行時
- 8. Windows Phone的8.1
- 9. Windows Phone 8.1(Windows運行時):使用Facebook和WebAuthenticationBroker清除Cookie
- 10. SQLite.Net擴展在Windows Phone 8.1運行時項目上的數據插入錯誤
- 11. Windows Phone 8.1上的WebRtc 8.1
- 12. 的Arduino(microUSB數據)和Windows Phone 8/8.1
- 13. 的Windows Phone 8.1運行時顯示的消息框
- 14. Windows Phone 8.1運行時 - 後臺任務時間觸發器
- 15. 的Windows Phone - 其他控件中
- 16. Windows Phone跟蹤運行事件
- 17. 應用程序關機時的事件Windows Phone 8.1
- 18. Windows運行時組件C++ Windows Phone 8
- 19. Windows Phone 8.1 IRC
- 20. Windows Phone 8.1 WebAuthenticationBrokerContinuationEventArgs
- 21. Windows Phone 8.1 UNHANDLED_EXCEPTION
- 22. MediaElement Windows Phone 8.1
- 23. System.NullReferenceException的Windows Phone 8.1
- 24. LoopSelector Windows Phone的8.1
- 25. 與Windows Phone的8.1
- 26. Windows phone 8.1本地數據庫
- 27. Windows Phone 8.1使用javascript保存數據
- 28. 顯示數據在Windows Phone 8.1
- 29. windows phone 8.1中的MessageDialog Box?
- 30. windows phone 8.1中的writeablebitmap
一旦我添加pushpin.SetValue(MapElementExt.TagProperty,MyPinData);如何檢索OnMapTapped事件中的標記值?或者如果UIElement是更好的選擇,你是否有鏈接樣本?謝謝。 – Juan 2014-10-27 22:28:03
嘗試類似: var val =(sender as UIElement).GetValue(MapElementExt.TagProperty);如果(val!= null) var MyPinData = val as MyObjectType; – rbrundritt 2014-10-28 07:42:22
我一定會錯過一些導致它不能正常工作的東西。 mapIcon.SetValue(MapElementExt.TagProperty,location.LocationId);然後在我的地圖中點擊var val =(發件人爲UIElement).GetValue(MapElementExt.TagProperty);但val是空的。 – Juan 2014-10-28 23:18:54