Skip to content

Xeolocalización

JavierMejuto edited this page Jun 17, 2021 · 9 revisions

Permisos

Na nosa aplicación necesitamos pedir permisos de acceso á ubicación do dispositivo ao usuario. Para iso:

  • No fragment HomeFragment, será onde implementemos a petición de permisos de ubicación. Para iso, no momento que se pulse o botón de inicio da ruta, chamarase á función checkLocationPermission() que comprobará se os permisos están aceptados para empezar a actividade do mapa. De non estar aceptados, chamarase a requestLocationPermission() que mostrará a notificación para que o usuario poida aceptar ou rexeitar os permisos de ubicación. Por último, sobreescribirase a función onRequestPermissionResult() para, en caso de aceptarse os permisos, iniciar a actividade do mapa, e, en caso de rexeitalos, mostrar un Toast como feedback de que foron rexeitados.

Xeolocalización

Actualmente obtemos a localización actual do usuario. Posteriormente, a idea é obter os diferentes sitios que o usuario vai visitando ata que pulse finalizar percorrido.

Visualización dos mapas

Amosaremos un mapa dinámico coa ubicación actual do usuario ademais de ir pintando o percorrido no mapa.

Para facer todo isto, seguimos o seguinte proceso:

  • Na actividade MapsActivity chamamos ao método startLocationTracking(). Nesta función faráse uso de LocationRequest para establecer cada canto se actualizará a localización e a función requestLocationUpdates de fusedLocationProviderClient para inciar estas actualizacións periódicas da ubicación. Ademais, chamaráse á función update() que se explica a continuación.
  • Na función update(), tras cada actualización gardaráse a localización do usuario nunha lista que será pasada á función responsable do pintado da ruta no mapa. Ademais, haberá unha función que gardará o nome da rúa da localización actual como un String, e outra función responsable de incrementar a puntuación en caso de que o usuario chegue a unha nova rúa non visitada anteriormente durante a ruta.
  • No método onMapReady() tamén indicamos que mostre os botóns de zoom coa propiedade uiSettings.isZoomControlsEnabled = true