我試圖在通用應用程序中執行一個看似簡單的任務。 我希望能夠點擊我的地圖,並點擊觸發一個事件,這將給我的座標。我如何觸發點擊事件以獲取地圖中座標的通用應用程序
有很多指導說明如何做到這一點,但我需要一個解決方案,可以在我的通用應用程序(Windows 8.1/WindowsPhone)中工作。
MSDN博客Ricky Brundritt寫了關於這個主題的很棒的文章,我按照這個指南創建了一個可以在這兩個項目中使用的地圖。
http://blogs.msdn.com/b/rbrundritt/archive/2014/06/24/how-to-make-use-of-maps-in-universal-apps.aspx
如果我理解正確的話,他創建了一個獲取項目之間共享的條件語句的文件。而當你調用該項目運行正常implementatoin被使用的方法不同:
例:
public void SetView(BasicGeoposition center, double zoom)
{
#if WINDOWS_APP
_map.SetView(center.ToLocation(), zoom);
OnPropertyChanged("Center");
OnPropertyChanged("Zoom");
#elif WINDOWS_PHONE_APP
_map.Center = new Geopoint(center);
_map.ZoomLevel = zoom;
#endif
}
現在,有落實,這將使我的座標,當我點擊的方法的方法在地圖上? 這裏是一個答案,一個類似的問題:(how to get the geolocation of a click on a bing map in C#)
public MainPage()
{
this.InitializeComponent();
this.MyMap.PointerPressedOverride += MyMap_PointerPressedOverride;
}
void MyMap_PointerPressedOverride(object sender, PointerRoutedEventArgs e)
{
Bing.Maps.Location l = new Bing.Maps.Location();
this.MyMap.TryPixelToLocation(e.GetCurrentPoint(this.MyMap).Position, out l);
Bing.Maps.Pushpin pushpin = new Bing.Maps.Pushpin();
pushpin.SetValue(Bing.Maps.MapLayer.PositionProperty, l);
this.MyMap.Children.Add(pushpin);
}
但怎麼一回事,因爲無法得到接取這不會對我的工作;
this.MyMap.PointerPressedOverride += MyMap_PointerPressedOverride;
我只有:
this.MyMap.PointerPressed += MyMap_PointerPressedOverride;
我也不要有接取TryPixelToLocation
在
this.MyMap.TryPixelToLocation(e.GetCurrentPoint(this.MyMap).Position, out l);
所以總結起來,即時尋找一種方式,當我觸發一個事件點擊可以在兩個項目中工作的地圖。幫助讚賞。
謝謝!
編輯:
#elif WINDOWS_PHONE_APP
private void _map_PointerPressed(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
{
Geopoint p;
_map.GetLocationFromOffset(e.GetCurrentPoint(_map).Position, out p);
MapClicked(p);
}
#endif
我有一個奇怪的問題,得到這個在手機上運行。當我按下地圖時,該方法不會觸發。在設備上進行調試時,您可以在屏幕側看到som號碼。當我將數字推到數字所在的位置時,方法會觸發,並在數字後面添加一個。這真的很奇怪。不知怎的,「數字」是可點擊的,但地圖本身不是。
有沒有人有類似的問題?
非常感謝您的幫助,也感謝您的博客和電子書。但有一個問題,當我點擊我的項目中的地圖 公共事件MapClickHandler MapClicked;總是空。當我刪除if語句,檢查是否爲空,我得到的座標。看起來你有一個名爲SetMapBindings的方法,我沒有這種方法,我無法在你的博客文章中找到它。也許這與我的問題有關? – user2915962 2014-12-08 12:47:34
SetMapDingings方法可能來自不同的代碼示例。我有一個類似的通用應用程序項目已經打開,並用它來測試。當我有回調時,我習慣於使用Actions,你必須做一個空檢查。如果它沒有if語句,那麼刪除它們。 – rbrundritt 2014-12-08 13:10:54
如果可以,請參閱編輯。 – user2915962 2014-12-17 15:03:02