c# - secretos - Windows Phone 8-Cómo mostrar la posición actual en el mapa
windows 10 mobile trucos y secretos (1)
prueba de esta manera,
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
He visitado este.
Como el título sugiere, estoy luchando con la visualización de la ubicación actual del usuario en el mapa.
Afaik tiene dos formas de mostrar la ubicación actual del usuario:
En Código: crea una elipse,
MapOverlay
como contenido de unMapOverlay
, configura el GeoCoordinate de MapOverlay, agrega esta superposición a unMapLayer
yMapLayer
al mapa, pero ya no puedo acceder aMapOverlay
y, por lo tanto, no puedo cambiar (actualizar) la posición del usuario. ¿Hay alguna manera de actualizar la posición del usuario sin tener que volver a dibujar todas las capas del mapa?XAML y código: en Windows Phone 7 pude agregar una
Pushpin
al mapa y dejar queGeoCoordinateWatcher
maneje el eventoPositionChanged
y establecerMyLocation.Location
en la ubicación actual.
Parece que no hay forma de agregar un Pushpin
al mapa si no usa Windows Phone Toolkit. Así que traté de agregar Pushpin
desde 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>
Pero no puedo acceder a la chinche MyLocation en mi MapPage.xaml (el depurador dice que es null
).
¿Puedo mostrar y actualizar la posición actual del usuario en el mapa con maptk:Pushpin
?
En Windows Phone 7 podría simplemente crear un diseño XAML para la chincheta que mantendría la ubicación del usuario así:
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>
entonces podría agregar un GeoCoordinateWatcher
que escucharía el evento PositionChanged
y cambiaría la Location
de la chinche MyLocation:
void GeoCoordinateWatcher_PositionChanged ( object sender, GeoPositionChangedEventArgs<GeoCoordinate> e )
{
MyLocation.Location = e.Position.Location;
}