Windows Phone 8 SDK Servicios de geolocalización

La geolocalización es un aspecto crucial del desarrollo móvil. Afortunadamente, encontrar la ubicación de los usuarios en Windows Phone 8 es fácil. Este tutorial le mostrará cómo se hace demostrando el Geolocador clase.


Descripción general del tutorial

El Windows Phone SDK es una plataforma de desarrollo muy potente que permite a los desarrolladores crear excelentes aplicaciones con el marco Silverlight. La reciente actualización del SDK a la versión 8.0 (Windows Phone 8) trae consigo una serie de cambios que hacen que algunas tareas genéricas sean más fáciles de realizar. Una de las áreas que vio una mejora en Windows Phone 8 es la API de ubicación. En versiones anteriores del SDK de Windows Phone, obtener la ubicación actual de un usuario era un poco desordenado, pero la técnica actual para hacer esto ha sido perfeccionada y un poco más directa..

La nueva técnica utiliza el método de llamada ASYNC de Microsoft, que mejora el rendimiento de las aplicaciones al tiempo que obtiene acceso a la ubicación de un usuario. Analicemos y echemos un vistazo a esta nueva forma de acceder a la ubicación actual en Windows Phone 8.


Prerrequisitos

Para intentar este tutorial, asumiré que tiene una comprensión básica de la plataforma de Windows Phone. También me gustaría creer que tiene un entendimiento básico de XAML y C # ya que este es el lenguaje con el que vamos a escribir nuestra aplicación. También deberá tener Visual Studio 2012 o superior con el SDK de Windows Phone 8 y un emulador de Windows Phone instalado en su máquina local. Alternativamente, puede usar un dispositivo real de Windows Phone en lugar del emulador.


1. Crear un nuevo proyecto

Abre Visual Studio y crea un nuevo proyecto de Windows Phone con Archivo -> Nuevo -> Proyecto.

En el panel izquierdo de la nueva ventana del proyecto, asegúrese de seleccionar la opción de Windows Phone en la subcategoría de Visual C #. Elija la aplicación de Windows Phone en la ventana principal y nombre el proyecto como desee y luego haga clic en Aceptar cuando haya terminado.



2. Configurar la interfaz de usuario

Ahora que hemos creado nuestra aplicación, podemos centrarnos en nuestro objetivo principal: obtener la ubicación actual del usuario y mostrarla en la pantalla. En términos simples, nuestra aplicación solo mostrará 2 elementos, un botón y un bloque de texto. El botón sería en lo que haríamos clic para decirle a nuestra aplicación que tome la ubicación actual de un usuario, y el TextBlock mostraría las coordenadas geográficas de nuestra ubicación actual.

Sigamos adelante y creemos nuestra sencilla interfaz de usuario. Use la barra de herramientas de Visual Studio para arrastrar y soltar un botón y un bloque de texto en cualquier lugar de la pantalla. En este punto, su aplicación debe tener un TextBlock y un botón como parte de su interfaz de usuario.

Debería verse similar a esto:


Te recomendaría encarecidamente que cambies la propiedad del nombre de tu botón y TextBlock para que sea coherente con este tutorial. Establezca el nombre del botón para que sea MyButton y de TextBlock para que sea MyTextBlock desde su ventana de código XAML.

 

3. Añadir lógica de geolocalización

En este punto, tenemos nuestra interfaz de usuario lista y podemos seguir adelante y comenzar a escribir la lógica para nuestra aplicación. Haga doble clic en el botón en la vista del diseñador y Visual Studio debería llevarlo automáticamente a la vista de código con un método ya creado..

 privado anulado MyButton_Click (remitente del objeto, RoutedEventArgs e) 

Este método generado es un método de delegación o devolución de llamada para el evento de clic de nuestro botón. Esto significa que el código dentro de este método solo se ejecutará cuando se haga clic en nuestro botón. Para alinearnos con nuestro objetivo, pondríamos el código que obtiene nuestra ubicación actual dentro de este método, ya que queremos que nuestra ubicación actual se determine cada vez que se haga clic en nuestro botón. Para lograr esto, vamos a utilizar las clases GeoLocator y GeoPosition..

La clase GeoLocator ayuda a obtener nuestra ubicación actual y realiza toda la interacción con el GPS / red y devuelve un objeto GeoPosition. Por otro lado, la clase GeoPosition nos proporciona una forma de consumir los datos devueltos que devuelve GeoLocator. Básicamente, piense en el GeoLocator como una herramienta de solicitud y el objeto GeoPosition como una herramienta de respuesta. Estas clases también brindan espacio para personalizar nuestras solicitudes y respuestas. Por ejemplo, podemos decirle al GeoLocator qué tan precisos (al medidor más cercano) queremos que sea nuestra ubicación actual, y qué tan rápido queremos que encuesten nuestra ubicación actual.

He escrito un método que ayuda a obtener nuestra ubicación actual y lo explicaré en detalle más adelante. Por ahora, agregue la siguiente referencia de espacio de nombres a su: Windows.Devices.Geolocation;. A continuación, copie el fragmento de código a continuación y péguelo en:

 private async void GetCurrentLocation ()  Geolocator locationFinder = new Geolocator   DesiredAccuracyInMeters = 50,  DesiredAccuracy = PositionAccuracy.Default ; intente Geoposition currentLocation = await locationFinder.GetGeopositionAsync (maximumAge: TimeSpan.FromSeconds (120), timeout: TimeSpan.FromSeconds (10)); Longitud de cadena = currentLocation.Coordinate.Longitude.ToString ("0.00"); Cadena de latitud = currentLocation.Coordinate.Latitude.ToString ("0.00"); MyTextBlock.Text = "Long:" + longitude + "Lat:" + latitude;   captura (UnauthorizedAccessException)   MessageBox.Show ("Y se produjo una excepción");  

Este método hace todo el trabajo por nosotros e incluso avanza para establecer nuestra propiedad de texto TextBlock para nosotros. Examinemos de cerca lo que hace el método..

En primer lugar, creamos un nuevo objeto GeoLocator llamado locationFinder. Primero, le decimos qué tan precisos son los medidores en los que queremos que sea nuestra ubicación y establecemos la precisión con la que queremos el resultado..

 Geolocator locationFinder = nuevo Geolocator  DesiredAccuracyInMeters = 50, iredDesiredAccuracy = PositionAccuracy.Default ;

A continuación, creamos una instancia de un objeto GeoPosition llamado ubicación actual dentro de un bloque try / catch en caso de cualquier excepción. Luego lo asignamos al objeto GeoPosition devuelto que nuestro objeto GeoLocator devuelve usando el GetGeoPostionAsync método.

 Geoposition currentLocation = await locationFinder.GetGeopositionAsync (maximumAge: TimeSpan.FromSeconds (120),  timeout: TimeSpan.FromSeconds (10)); LongString longitude = currentLocation.Coordinate.Longitude.ToString ("0.00"); Lat Latitud de cadena = currentLocation.Coordinate.Latitude.ToString ("0.00");

Finalmente, obtenemos nuestra longitud y latitud devueltas y configuramos nuestro TextBlock para mostrar estos valores.

 MyTextBlock.Text = "Lon:" + longitud + "Lat:" + latitud;

¡Es así de simple! Hay algunas cosas más que hacer antes de probar nuestra aplicación. Primero, necesitamos llamar a nuestro GetCurrentLocation Método dentro del método delegado de nuestro botón que se creó inicialmente para nosotros.

 private void MyButton_Click (objeto remitente, RoutedEventArgs e) GetCurrentLocation (); 

Esto significa que cada vez que hacemos clic en nuestro botón, nuestro GetCurrentLocation El método se ejecutará y nuestra ubicación actual se recuperará para nosotros.

Finalmente, necesitamos solicitar permiso para usar la API de ubicación en Windows Phone. Hacemos esto editando nuestro archivo de manifiesto. En el explorador de soluciones, busque una entrada titulada Propiedades y muévala para ver sus subentradas. Uno de los nombres de archivo de los subentrados debe ser WMAppManifest.xml. Haga doble clic en esto y verá una GUI con cuatro pestañas, una de ellas se titula Capacidades. Selecciona esa pestaña y deberías ver algo como esto:


Ahora, marque la opción ID_CAP_LOCATION Si no está marcado, guarde su proyecto (CTRL + S). Una vez hecho esto, puede cerrar la ventana WMAppManifest.xml. Lo que acabamos de hacer es un permiso solicitado explícitamente para permitir que nuestra aplicación utilice la herramienta de localización / GPS de Windows Phone. Con eso hecho, ahora podemos ejecutar nuestra aplicación por primera vez.!

Si está utilizando un dispositivo físico de Windows Phone para realizar pruebas, asegúrese de tener la Ubicación activada en la configuración y tenga una conexión a Internet válida a través de una red Wifi o móvil. Esto es muy importante y obligatorio para que nuestra aplicación funcione. Si está utilizando un emulador de teléfono de Windows, asegúrese también de que la Ubicación esté habilitada también en el Emulador y de que la conexión a Internet funcione..

Para iniciar la aplicación, busque el botón de reproducción verde en el menú del estudio visual y seleccione su emulador o la opción de dispositivo si está usando un teléfono. Asegúrese de que la configuración de la solución en el lado derecho del botón esté configurada en Depurar.



4. Probar la aplicación

Haga clic en el botón verde para iniciar la aplicación. La aplicación debe iniciar y mostrar la página en la que dibujamos nuestra interfaz de usuario. Ahora, haga clic en el botón para ordenar a la aplicación que obtenga nuestras coordenadas de ubicación actuales y se le presentará un resultado similar al siguiente:



Conclusión

Es posible que ya haya notado que hemos logrado con éxito lo que nos propusimos lograr y nuestra ubicación actual se nos muestra. ¡Puedes ver lo fácil que fue lograr esto con tan poca programación! Esta es una operación muy simple pero importante en el desarrollo de Windows Phone. Siéntase libre de jugar con la configuración personalizable de las clases GeoLocator y GeoPosition. Gracias por leer!