正如标题所示,我正在努力在地图上显示用户的当前位置。
Afaik 有两种显示当前用户位置的方法:
在代码中:创建一个椭圆,将其设置为 a 的内容
MapOverlay
,设置 MapOverlay 的地理坐标,将此叠加层添加到 aMapLayer
并将其添加到地图中 - 但我无法再访问MapOverlay
,因此我无法更改(更新)的位置用户。 有没有办法更新用户位置而不必重绘所有地图图层?XAML 和代码:在 Windows Phone 7 中,我能够将 a 添加
Pushpin
到地图并让GeoCoordinateWatcher
处理PositionChanged
事件并将其设置MyLocation.Location
为当前位置。
Pushpin
如果您不使用 Windows Phone Toolkit ,似乎无法将 a 添加到地图中。所以我尝试Pushpin
从 Windows Phone Toolkit 中添加:
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"
<maptk:Pushpin x:Name="MyLocation">
<maptk:Pushpin.Template>
<ControlTemplate>
<Ellipse
Width="15"
Height="15"
Margin="0"
Fill="SteelBlue"
StrokeThickness="1"
Stroke="Black"/>
</ControlTemplate>
</maptk:Pushpin.Template>
</maptk:Pushpin>
但我无法访问 MapPage.xaml 中的 MyLocation 图钉(调试器说它是null
)。
我可以在地图上显示和更新当前用户位置maptk:Pushpin
吗?
在 Windows Phone 7 中,我可以简单地为图钉创建一个 XAML 布局,该布局将保存用户位置,如下所示:
xmlns:maps="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps"
<maps:Map Grid.Row="2" x:Name="Map" >
<maps:Pushpin x:Name="MyLocation" >
<maps:Pushpin.Template>
<ControlTemplate>
<Ellipse Width="12"
Height="12"
Margin="0"
Fill="SteelBlue"
StrokeThickness="1"
Stroke="Black"
/>
</ControlTemplate>
</maps:Pushpin.Template>
</maps:Pushpin>
</maps:Map>
然后我可以添加一个GeoCoordinateWatcher
监听PositionChanged
事件并更改Location
MyLocation 图钉的:
void GeoCoordinateWatcher_PositionChanged ( object sender, GeoPositionChangedEventArgs<GeoCoordinate> e )
{
MyLocation.Location = e.Position.Location;
}