Location.watchPositionAsyn c не устанавливает состояние как местоположение - PullRequest
0 голосов
/ 02 августа 2020

Я использую expo-location для отслеживания местоположения моих пользователей при обновлении

В частности, Location.watchPositionAsync(options, callback) функции.

Он выводит правильное местоположение, но не устанавливает этот вывод как состояние использование setLocation

location возвращает следующее:

Object {
  "remove": [Function remove],
}

setLocation и location хранятся в поставщике контекста

Мой код следующим образом:

Прил. js

    useEffect(() => {
        console.log('hi')
        _getLocationAsync = async () => {
            let { status } = await Permissions.askAsync(Permissions.LOCATION)
            if (status !== 'granted') {
                console.log('debieeed')
            }
            let locations = await Location.watchPositionAsync({ accuracy: Location.Accuracy.Balanced, timeInterval: 10000, distanceInterval: 1 }, (loc) => setLocation(loc.coords));
            console.log(locations)
           
        }
        _getLocationAsync()
    }, [])

1 Ответ

0 голосов
/ 02 августа 2020

Я исправил свою проблему, просто сделав глубокую копию возвращенного местоположения

Исправьте меня, если мой лог c неправильный

Я изменил это

let locations = await Location.watchPositionAsync({ accuracy: Location.Accuracy.Balanced, timeInterval: 10000, distanceInterval: 1 }, (loc) => setLocation(loc.coords));
           

К этому

let locations = await Location.watchPositionAsync({ accuracy: Location.Accuracy.Lowest,  distanceInterval: 2000 }, loc => setLocation(JSON.parse(JSON.stringify(loc.coords))));

Где JSON.parse(JSON.stringify(loc.coords)) делает глубокую копию данных о местоположении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...