代码片断很简单:
wx.getLocation({
type: 'gcj02',
success(location) {
console.log(location)
}
})
我摸过出来的规律是:
- 之前在位置 1,定位准确。
- 退出小程序。
- 移至位置 2,打开小程序,通过 wx.getLocation 得到的还是位置 1;多次调用,结果一样。
- 调用 wx.chooseLocation(),地图上的定位点会从位置 1 移至位置 2
- 再次打开小程序,通过 wx.getLocation 得到的就是位置 2 了
我的感觉是,需要在调用 wx.getLocation 时出现了定位图标,但并没有得到正确的位置、还是使用上次的位置。如果在微信中通过在聊天中「发送位置」来更新位置信息,就能得到正确的了。
遇到这个问题,真的是一点办法没有,还请官方内部确认下。目前,可能只能考虑通过百度等第三方来获取实时位置了。
怎么说呢,感觉是有一定概率;或者说,感觉位置缓存更新是有一定机制的。这也使得,这个问题不是必现的;但一旦出现就很难受。
比如,我很久没更新位置,获取位置就需要较长时间。获取后立即再次获取,就只需要很短时间。这说明第 2 次是从缓存内获得的,或者至少是考虑了缓存信息。
我比较怀疑是这个缓存机制有问题。
我一般会在app.js里调用一次wx.getLocation,不做任何处理,就是为了其他页面里第二次调用它得到准确的位置。
你机智的。
不过,事实上,有时候我尝试调用 wx.getLocation 3 次,位置均没有更新。
调用 wx.openLocation 时,能肉眼看到地图上的点从旧位置移至新位置。之后,再调用 wx.getLocation 就是正确的位置了。
这样有效果吗 老哥
不知道,我们业务逻辑已经改掉了,不再纠结这个问题了。
我们的小考勤,改成了全屏的map了,再提供一个button专门刷新位置,让用户自己用眼看,如果不准,你就自己刷新位置吧。
好吧 我试试,我们现在还有这个需求
后台进去,是有更新位置的
经纬度是有更新,但是你A点获取次经纬度后 走到B点 大致1KM路程 再次获取到的还是A点附近的经纬度