1

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

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

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

  2. 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事件并更改LocationMyLocation 图钉的:

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

1 回答 1

0

试试这个方法

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

于 2013-09-24T09:54:00.510 回答