-
Notifications
You must be signed in to change notification settings - Fork 0
Xeolocalización
JavierMejuto edited this page Jun 17, 2021
·
9 revisions
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.
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.
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