【问题标题】:Location.watchPositionAsync not setting state as locationLocation.watchPositionAsync 未将状态设置为位置
【发布时间】:2020-08-01 23:15:33
【问题描述】:

我正在使用 expo-location 在更新时监控我的用户位置

特别是Location.watchPositionAsync(options, callback) 函数。

它输出正确的位置,但没有使用setLocation将该输出设置为状态

location 正在返回以下内容:

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

setLocationlocation 存储在上下文提供程序中

我的代码如下:

App.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()
    }, [])

【问题讨论】:

    标签: javascript react-native geolocation expo


    【解决方案1】:

    我遇到了同样的问题,没有使用watchPositionAsync() 获取任何位置

    似乎有一个错误(或者它是这样设计的,idk)。 您必须将准确度设置为高才能获取位置对象。它不适用于其他精度选项(因为它也不适用于默认值)。

    let location = await Location.watchPositionAsync(
      {accuracy:Location.Accuracy.High},
      (loc) => {console.log(loc)}
    );

    希望这对某人有所帮助,我为此浪费了一个小时 :)

    【讨论】:

      【解决方案2】:

      我通过简单地复制返回的位置来解决我的问题

      如果我的逻辑有误,请纠正我

      我改变了这个

      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)) 正在对位置数据进行深层复制

      【讨论】:

      • 您是否必须为最新的 expo SDK 更新此内容?如果有,怎么做?
      猜你喜欢
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 2020-10-01
      • 2019-10-28
      • 1970-01-01
      相关资源
      最近更新 更多