我正在使用navigator.geolocation.getCurrentPosition()
获取移动应用中的当前位置。
首先,它正确获取当前位置。
我每秒都会调用该函数来保持位置值(纬度,经度)的更新。
但每次调用函数时,它都返回相同的值,而timestamp
也没有变化。
有什么想法吗?
答案 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})
PositionOptions.maximumAge属性是一个正长值,表示可以返回的可能缓存位置的最大年龄(以毫秒为单位)。如果设置为0,则表示设备无法使用缓存位置,必须尝试检索实际当前位置。如果设置为Infinity,则无论其年龄如何,设备都必须返回缓存位置。
答案 1 :(得分:0)
您可以将其他选项传递给getCurrentPosition()
。
支持的选项为timeout (ms), maximumAge (ms), enableHighAccuracy (bool)
。
在这里,您可以看到maximumAge选项。如果在maximumAge限制内存在缓存位置,它将返回缓存的位置数据。您可以将其设置为0,因此它不会返回任何缓存数据,而是在您每次发出位置请求时读取并返回位置数据。
此外,我不确定您是否每秒都会获得更新的位置,这是一个异步任务,有时长于一秒来完成整个request > read location > send back response
过程。你也必须记住这一点。