【问题标题】:react native navigator.geolocation.getCurrentPosition not updating反应本机 navigator.geolocation.getCurrentPosition 不更新
【发布时间】:2018-07-16 14:43:45
【问题描述】:

我正在使用navigator.geolocation.getCurrentPosition() 在移动应用中获取当前位置。

一开始它会正确获取当前位置。

我每秒调用一次函数以保持位置值(纬度、经度)的更新。

但每次我调用该函数时,它都会返回相同的值,而 timestamp 也没有改变。

有什么想法吗?

【问题讨论】:

    标签: react-native geolocation


    【解决方案1】:

    您应该考虑使用参数“maximumAge”并将其设置为 0 以避免获取缓存值。例如

    navigator.geolocation.getCurrentPosition(position => {
          region: {
            latitude: position.coords.latitude,
            longitude: position.coords.longitude
          }
    }, err => {
      console.log(err)
      alert('fetching the position failed')
    }, {enableHighAccuracy: false, timeout: 20000, maximumAge: 0})
    

    根据MDN documentation

    PositionOptions.maximumAge 属性是一个正长值,指示可接受返回的可能缓存位置的最大年龄(以毫秒为单位)。如果设置为 0,则意味着设备不能使用缓存的位置,必须尝试检索真实的当前位置。如果设置为 Infinity,则设备必须返回缓存的位置,无论其年龄如何。

    【讨论】:

      【解决方案2】:

      您可以将其他选项传递给 getCurrentPosition() 。 支持的选项是timeout (ms), maximumAge (ms), enableHighAccuracy (bool)。 在这里您可以看到 maximumAge 选项。如果在 maximumAge 限制内有缓存的位置,它将返回缓存的位置数据。您可以将其设置为 0,这样它就不会返回任何缓存数据,而是在您每次发出位置请求时读取并返回位置数据。

      我也不确定你是否会每秒更新一次位置,这是一个异步任务,有时完成整个request > read location > send back response 过程的时间超过一秒。您也必须牢记这一点。

      【讨论】:

        猜你喜欢
        • 2018-04-30
        • 2020-05-04
        • 1970-01-01
        • 1970-01-01
        • 2017-07-27
        • 2021-10-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-24
        相关资源
        最近更新 更多