Я использую airbnb map для реагирования в своем приложении. Этот вопрос предназначен для приложения для Android, так как я еще не обошел приложение iOS.
Моя проблема:
navigator.geolocation отлично работает на эмуляторе, но слишком долго работает на реальных устройствах, до такой степени, что иногда это случается на более старых устройствах.
Что я заметил:
если showsUserLocation
prop установлен в значение true, я могу увидеть маркер "текущей позиции" на карте до getCurrentPosition решает.
Что я хочу:
- Я хочу, чтобы мой регион всегда был ориентирован на местоположение пользователя.
- Я хочу либо получить доступ к родной геолокации api (должен быть быстрее?), или, может быть, кто-то скажет мне, что я делаю неправильно. Ниже приведено образец кода.
- Я хочу по-прежнему обнаруживать местоположение пользователя даже после включения/выключения служб определения местоположения. Это поведение
showsUserLocation
prop, но он кажется, что когда-то ошибки watchPostion, он полностью останавливается.
Вот что я до сих пор, это очень просто:
componentDidMount() {
navigator.geolocation.getCurrentPosition(
(position) => {
console.log("getCurrentPosition Success");
this.setState({
region: {
...this.state.region,
latitude: position.coords.latitude,
longitude: position.coords.longitude,
}
});
this.props.resetNotifications();
this.watchPosition();
},
(error) => {
this.props.displayError("Error dectecting your location");
alert(JSON.stringify(error))
},
{enableHighAccuracy: true, timeout: 20000, maximumAge: 1000}
);
}
watchPosition() {
this.watchID = navigator.geolocation.watchPosition(
(position) => {
console.log("watchPosition Success");
if(this.props.followUser){
this.map.animateToRegion(this.newRegion(position.coords.latitude, position.coords.longitude));
}
},
(error) => {
this.props.displayError("Error dectecting your location");
},
{enableHighAccuracy: true, timeout: 20000, maximumAge: 1000}
);
}