В настоящее время я создаю собственное приложение для реагирования, в котором я получаю местоположение пользователя и из заранее определенной точки получаю указания от этой точки до точки пользователя. Я делаю это с помощью хуков, поэтому сначала устанавливаю координаты местоположения пользователя равными 0, 0, а затем изменяю их, вызывая функцию. Как показано здесь
const [thisLatitude, setLatitude] = useState()
const [thisLongitude, setLongitude] = useState()
const origin = {latitude: 49.278094, longitude: -122.919883}
and then there are other functions that help compute the current location but the main one being
const locateCurrentPos = () => {
navigator.geolocation.getCurrentPosition(
position => {
console.log(thisLatitude)
console.log(thisLongitude)
const newLatitude = position.coords.latitude
const newLongitude = position.coords.longitude
setLatitude(newLatitude)
setLongitude(newLongitude)
}
)
}
and later called here
<View style={styles.container}>
<View>{componentWillMount()}</View>
<MapView
provider = {PROVIDER_GOOGLE}
showsUserLocation = {true}
style = {styles.mapStyle}
region = {{
latitude: thisLatitude,
longitude: thisLongitude,
latitudeDelta: 0.09,
longitudeDelta: 0.035
}}>
<MapViewDirections
origin={origin}
destination={{latitude: thisLatitude, longitude: thisLongitude}}
apikey={GOOGLE_MAPS_APIKEY}
strokeWidth={3}
strokeColor="blue"
onReady={result => {
const mins = result.duration
const dist = result.distance
setMinutes(mins);
setDistance(dist);
}
}
/>
Итак, функция и все работает, и на самом деле большую часть времени пункт назначения считывает правильные координаты пользователя, но иногда, когда я нахожусь на экране карты, переключаюсь на другой экран и прихожу назад (и даже иногда, когда я go для отображения экрана карты при запуске приложения), точка назначения в mapviewdirections остается на 0,0, даже если thisLatitude и thisLongitude изменяются на правильные координаты пользователя через функцию componentWillMount (), которая вызывает locateCurrentPos (). Я знаю это, потому что я console.Log значения и значения являются правильными координатами, которые я хочу, чтобы пункт назначения был, но пункт назначения читает его, как если бы это было
destination = {{широта: 0, долгота: 0} } когда должно быть
destination = {{latitude: thisLatitude, longitude: thisLongitude}}.
Что-то не так, вызванное тем, как реагируют на собственные обновления, или что-то не так с код?