反应原生navigator.geolocation.getCurrentPosition不更新

时间:2018-02-06 13:51:27

标签: react-native geolocation

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

首先,它正确获取当前位置。

我每秒都会调用该函数来保持位置值(纬度,经度)的更新。

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

有什么想法吗?

2 个答案:

答案 0 :(得分: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,则无论其年龄如何,设备都必须返回缓存位置。

答案 1 :(得分:0)

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

此外,我不确定您是否每秒都会获得更新的位置,这是一个异步任务,有时长于一秒来完成整个request > read location > send back response过程。你也必须记住这一点。