Я думаю, что проблема в вашем обратном вызове позиции: this.iGetPosition
.Попробуйте использовать функцию обратного вызова, как показано ниже.Это работает для меня (проверьте функцию getCurrentPosition
):
componentDidMount() {
this.requestAccess();
}
requestAccess = async () => {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
'title': 'Location permission',
'message': 'App needs access to your location ' +
'so we can show your location.'
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
navigator.geolocation.getCurrentPosition(
(position) => {
this.setState({
latitude: position.coords.latitude,
longitude: position.coords.longitude,
error: null,
});
},
(error) => this.setState({ error: error.message }),
{ enableHighAccuracy: false, timeout: 20000, maximumAge: 1000 },
);
} else {
console.log("Location permission denied")
}
} catch (err) {
console.warn(err)
}
}