useEffect(() => {
let subscription: Location.LocationSubscription;
(async () => {
const { status } = await Location.requestForegroundPermissionsAsync();
if (status !== 'granted') return;
subscription = await Location.watchPositionAsync(
{
accuracy: Location.Accuracy.Balanced,
timeInterval: 3000,
distanceInterval: 10,
},
(novaPosicao) => {
const { latitude, longitude } = novaPosicao.coords;
setPosicaoUsuario({ latitude, longitude });
mapaRef.current?.animateToRegion({
latitude,
longitude,
latitudeDelta: 0.01,
longitudeDelta: 0.01,
}, 500);
}
);
})();
return () => subscription?.remove();
}, []);