Windows Phone 8 – 如何在地图上显示当前位置

正如标题所示,我正在努力在地图上显示用户的当前位置。

Afaik有两种显示当前用户位置的方法:

  1. 在代码中:创建一个椭圆,将其设置为MapOverlay内容,设置MapOverlay的GeoCoordinate,将此叠加层添加到MapLayer并将其添加到地图中 – 但我无法再访问MapOverlay ,因此我无法更改(更新)用户的位置。 有没有办法更新用户位置而不必重绘所有地图图层?

  2. XAML和代码:在Windows Phone 7中,我能够将一个Pushpin添加到地图中,让GeoCoordinateWatcher处理PositionChanged事件并将MyLocation.Location设置为当前位置。

如果您不使用Windows Phone Toolkit,似乎无法将Pushpin添加到地图中。 所以我尝试从Windows Phone Toolkit添加Pushpin

 xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps" xmlns:maptk="clr-namespace:Microsoft.Phone.Maps.Toolkit;assembly=Microsoft.Phone.Controls.Toolkit"        

但我无法访问MapPage.xaml中的MyLocation图钉(调试器表示它为null )。

我可以使用maptk:Pushpin在地图上显示和更新当前用户位置吗?

在Windows Phone 7中,我可以简单地为图钉创建一个XAML布局,该布局将保存用户位置,如下所示:

 xmlns:maps="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps"          

然后我可以添加一个GeoCoordinateWatcher来监听PositionChanged事件并更改MyLocation图钉的Location

 void GeoCoordinateWatcher_PositionChanged ( object sender, GeoPositionChangedEventArgs e ) { MyLocation.Location = e.Position.Location; } 

试试这种方式,

 Pushpin pushpin = new Pushpin(); pushpin.Background = new SolidColorBrush(Colors.Red); pushpin.Location = new GeoCoordinate(Latitude, Longitude); pushpin.Content = "SampleString"; pushpin.Width = 25; map1.Children.Add(pushpin);//this is way add pushpin to map 

参观了这个。

http://social.msdn.microsoft.com/Forums/wpapps/en-US/3d95b0c5-5f48-4918-b761-f8302fa090c2/updatehow-to-show-pushpin-on-microsoftphonemapscontrolsmap#bbb42943-663b-41f1-a920- f7368f2fee70