MapViewDirections и GoogleMaps Directions не читают правильную переменную для пункта назначения в React Native - PullRequest
0 голосов
/ 06 мая 2020

В настоящее время я создаю собственное приложение для реагирования, в котором я получаю местоположение пользователя и из заранее определенной точки получаю указания от этой точки до точки пользователя. Я делаю это с помощью хуков, поэтому сначала устанавливаю координаты местоположения пользователя равными 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}}.

Что-то не так, вызванное тем, как реагируют на собственные обновления, или что-то не так с код?

...