Я делаю приложение с помощью собственной реакции, и у меня есть MapView, который изначально должен быть в центре текущего местоположения. На ios центрирование выполняется автоматически (центр, вызываемый в компоненте, который монтировал), но на Android центрирование происходит только тогда, когда я вызываю метод centerLocation с помощью кнопки после монтирования компонента. Я смог сузить проблему до того факта, что получение текущего местоположения изначально никогда не разрешает первый вызов, но я не уверен, почему это происходит, и почему он работает нормально при втором вызове метода. Разрешения все предоставлены и в порядке. Любая помощь будет оценена :)
Мой текущий вызов метода определения местоположения: (в любом случае, через Location или через навигатор не разрешается первый вызов. Стоит отметить, что на iOS это работает совершенно нормально)
const getCurrentLocation = async () => {
const position = Location.getCurrentPositionAsync({ enableHighAccuracy: true });
return position;
// return new Promise<Position>((resolve, reject) => {
// navigator.geolocation.getCurrentPosition(position => resolve(position), e => reject(e));
// });
};
Положение никогда не разрешается, когда centerLocation вызывается из componentDidMount. Однако, когда я снова вызываю его через кнопку, он работает нормально.
centerLocation = () => {
return getCurrentLocation().then((position) => {
console.log(position);
if (position) {
this.setState({
region: {
latitude: position.coords.latitude,
longitude: position.coords.longitude,
latitudeDelta: 0.003,
longitudeDelta: 0.003,
},
});
}
});
}
У меня возникают похожие проблемы и с другими экранами / использованиями с местоположением. Например, у меня есть фид, который пытается извлечь контент из определенного местоположения, но первоначальный вызов местоположения никогда не разрешается, а работает только после того, как я вручную обновлю фид. Только на Android, хотя. Большое спасибо!