Este artículo presenta las características de ubicación de Windows Phone 8 y cómo las ventanas teléfono desarrolladores puede utilizar las nuevas características de ubicación en su aplicación para obtener la ubicación actual del dispositivo.
El SDK de Windows Phone proporciona mapas APIs para los desarrolladores desarrollar aplicaciones compatibles con ubicación y ubicación. Con la API de localización los desarrolladores pueden utilizar hardware del teléfono como GPS, Wifi etc. para identificar y rastrear la ubicación del teléfono.
El Windows Phone las siguientes tecnologías de localización proveedor para rastrear la ubicación
Sistema de posición Global asistido es un satélite basado en sistema de posicionamiento que ofrece uno de los resultados más precisos de la ubicación de acceder desde el teléfono. A-GPS consume más energía y por lo tanto, los desarrolladores pueden necesitar usarla con cuidado y sólo cuando la aplicación necesita la alta precisión de la localización.
La técnica de torre celular utiliza el proveedor de red y la ubicación del teléfono se encuentra basado en la distancia y el tiempo de ping entre torres de celular. Esta técnica es menos precisa que el A-GPS, pero la precisión aumenta a medida que más torres están incluidas para el cálculo de la situación. Consume menos energía que los A-GPS.
El Wifi consume menos energía que A-GPS y puede proporcionar precisión mejor que la técnica de torre celular en algunos escenarios. Esto utiliza la base de datos de localización global de redes Wi-Fi y teléfono identificándola dentro de su alcance.
El SDK de Windows Phone 7.5 proporciona la clase GeoCoordinateWatcher que puede utilizarse para determinar la ubicación actual del usuario de la Phone.In del proyecto Windows Phone 7.5, debe agregar la referencia a la System.Device.dll. Tenga en cuenta que este archivo dll se añade automáticamente en Windows Phone 8 proyecto.
A continuación se ofrece un fragmento de código sobre cómo utilizar la clase GeoCoordinateWatcher para encontrar la ubicación actual del teléfono.
GeoCoordinateWatcher watcher = new GeoCoordinateWatcher (); watcher.PositionChanged += watcher_PositionChanged; private void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) { var Latitude = e.Position.Location.Latitude; var longitude = e.Position.Location.Longitude; }
GeoCoordinateWatcher watcher =
new
GeoCoordinateWatcher ();
watcher.PositionChanged += watcher_PositionChanged;
private
void
watcher_PositionChanged(
object
sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
var Latitude = e.Position.Location.Latitude;
var longitude = e.Position.Location.Longitude;
}
Empieza el GeoCoordinateWatcher
watcher.Start();
Las capacidades de localización se ha establecido en el archivo de manifiesto de la aplicación para la aplicación para funcionar bien cuando se usa la API de localización.
Si las capacidades de localización no se configuran en el archivo de manifiesto, el siguiente es el comportamiento.
1. Si la aplicación está dirigida a Windows Phone 7.1, entonces un error de estado será recibido al intentar iniciar el vigilante GeoCoordinate.
2. Si la aplicación está dirigida a Windows Phone 8, entonces la aplicación generará UnauthorizedAccessException.
Ajuste de las capacidades de localización es bastante fácil, tendrá que incluir la ID_CAP_LOCATION en la sección de las capacidades de tu WMAppManifest.xml. Tenga en cuenta que usted también debe fijar el ID_CAP_NETWORKING.
<
Capabilities
>
Capability
Name
=
"ID_CAP_LOCATION"
/> < Capability Name="ID_CAP_NETWORKING"/>
...
</
Si está utilizando Microsoft Visual Studio 2012, puede agregar las capacidades con el editor de GUI como se muestra en la siguiente captura de pantalla.
En Windows Phone 8, puede utilizarse la clase geolocalizador para recuperar la ubicación del teléfono. Es el equivalente de la clase GeoCoordinateWatcher en Windows Phone 7.5.
El GeoCoordinateWatcher aún se admite en windows phone 8 pero se recomienda utilizar la nueva clase geolocalizador que forma parte de la ejecución de Windows Phone.
El geolocalizador puede utilizarse para recuperar o la ubicación en la demanda mediante GetGeopositionAsync y también para obtener continuamente la ubicación controlando el evento PositionChanged. Aquí está el el controlador del evento click del botón que se utiliza para recuperar la ubicación actual usando el geolocalizador
async
Button_Click_1(
sender, RoutedEventArgs e)
Geolocator geolocator =
Geolocator();
geolocator.DesiredAccuracy = PositionAccuracy.Default;
Geoposition myLocation = await geolocator.GetGeopositionAsync();
var latitude = myLocation.Coordinate.Latitude;
var longitude = myLocation.Coordinate.Longitude;
La clase geolocalizador incluye diferentes propiedades como la exactitud deseada, umbral de movimiento, DesiredAccuracyInMeters.
Exactitud deseada es una propiedad que permite a los desarrolladores especificar la precisión de la localización deseada. Acepta Enum con los valores por defecto o alto. Si ves esta propiedad por defecto, el sistema operativo decide entonces el nivel de precisión. Cuando se establece este de alta, el sistema operativo prefiere la precisión del GPS.
El SDK de Windows Phone 8 permite al desarrollador especificar la aplicación como seguimiento de la aplicación que se ejecuta en segundo plano para el seguimiento de la situación sólo de localización.
Para activar la aplicación para ser una aplicación de seguimiento de la ubicación, usted necesita agregar el elemento BackgroundExecution en el elemento de tarea predeterminada en el archivo WMAppManifest.xml como se muestra a continuación y suscribirse al evento de la clase geolocalizador PositionChanged.
<DefaultTask Name="_default" NavigationPage="MainPage.xaml" > <BackgroundExecution> <ExecutionType Name="LocationTracking" /> </BackgroundExecution > </DefaultTask>
<DefaultTask Name=
"_default"
NavigationPage=
"MainPage.xaml"
<BackgroundExecution>
<ExecutionType Name=
"LocationTracking"
/>
</BackgroundExecution >
</DefaultTask>
Cuando la aplicación se está ejecutando en segundo plano, necesita suscribirse al evento RunningInBackground si el PhoneApplicationService en el App.xaml archivo a recibir notificación sobre el cambio en la situación. Otros Lenguajes: Location API in Windows Phone 8 (en-US)