En este post vamos a ver el plugin de geolocalización en Xamarin, con el que podremos conocer la información exacta de la ubicación en la que se encuentra el dispositivo móvil en el momento.

Este plugin, el cual pertenece a James Montemagno (uno de los muchos que tiene), se puede descargar de manera gratuita desde Visual Studio directamente a tu proyecto. Se encarga de hacer una llamada a la API y recuperar la posición exacta del dispositivo, recogiendo las coordenadas de latitud y longitud, que será lo que utilicemos en esta práctica.

Además, para darle más sentido a la práctica, incorporaremos un mapa externo (Google Maps), mediante Xamarin.Essentials, en el que podremos ver nuestra posición mediante esta geolocalización.

NOTA: Esta práctica va a estar dirigida únicamente a los dispositivos Android.

1. Creación del proyecto

Crearemos un proyecto Xamarin.Forms con las opciones por defecto para que nos cree los proyectos en las tres plataformas (Android, iOS y UWP) por si en un futuro lo queremos añadir.

1
2

2. Permisos

Lo primero será asignar los permisos para que la aplicación pueda acceder a la ubicación del dispositivo, para ello tendremos que acceder a las propiedades de nuestro proyecto Android.

3

Una vez dentro de las propiedades elegiremos la segunda opción “Android Manifest” y en la parte de abajo dónde aparecen todos los permisos tendremos que seleccionar “ACCESS_COARSE_LOCATION” y “ACCESS_FINE_LOCATION”. Después guardaremos para que surtan efecto los cambios.

4

3. Instalación de paquetes

Si ya hemos dado los permisos necesarios, será momento de añadir el plugin de Geolocator, que será el encargado de darnos la posición exacta, y el NuGet de Xamarin.Essentials, para posteriormente incluir el mapa en nuestra aplicación. Para ello con el botón derecho del ratón en la solución del proyecto accederemos a la administración de paquetes.

5

Una vez en la pantalla de NuGet de nuestro proyecto tendremos que instalar los paquetes anteriormente mencionados.

6
7

4. Configuración de archivos

4.1. Archivo .xaml

Editaremos el archivo xaml, que será la vista de nuestra aplicación. En ella, podremos ver la latitud y longitud actual donde se encuentra el dispositivo. También incluiremos un botón que llamará a una función, la cual se encargará de mostrar el Mapa de Google.

8

4.2. Archivo .cs

Por último, editaremos el archivo cs, que será el encargado de realizar las llamadas pertinentes a la API para recuperar la posición.

Para ello, mediante la función “Localizar()”, llamada en el constructor para que se ejecute nada más arrancar la aplicación, podremos configurarlo de la siguiente forma para recuperar la latitud y longitud actual, mandándola posteriormente a la vista. También declararemos “lati” y “longi” para posteriormente guardar los datos y utilizarlo en el siguiente método para mostrar el mapa.

9

El método para mostrar el mapa quedaría de la siguiente forma.

10

5. Resultado

Para terminar la práctica ejecutamos la aplicación y verificamos que funcione correctamente. Como vemos aparece la posición donde nos encontramos en las coordenadas de latitud y longitud.

11


¡FALLO! En el caso que no aparezca ningún valor puede ser que no estén asignados los permisos de ubicación en nuestro dispositivo móvil y no pueda acceder a dichos datos. Para ello, en nuestro móvil, accederemos a ajustes, aplicaciones y elegiremos nuestra aplicación. En sus ajustes daremos permisos de localización/ubicación.

Si pulsamos el botón de mostrar mapa, se abrirá el mapa de Google con nuestra posición, ya que la hemos pasado mediante las variables declaradas anteriormente.

12

Autor/a: Victor Lainez Mesado

Curso: Microsoft MCSA Web Applications + Microsoft MCSD App Builder + Xamarin

Centro: Tajamar

Año académico: 2018-2019

Código / recursos utilizados / Otros datos de interés: https://github.com/vLAINm/ProyectoGPS

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.