收藏
回答

wx.getLocation 不能获取最新位置

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.getLocation 客户端 6.7.4 2.2.3

代码片断很简单:

    wx.getLocation({

      type: 'gcj02',

      success(location) {

        console.log(location)

      }

    })


我摸过出来的规律是:


- 之前在位置 1,定位准确。

- 退出小程序。

- 移至位置 2,打开小程序,通过 wx.getLocation 得到的还是位置 1;多次调用,结果一样。

- 调用 wx.chooseLocation(),地图上的定位点会从位置 1 移至位置 2

- 再次打开小程序,通过 wx.getLocation 得到的就是位置 2 了


我的感觉是,需要在调用 wx.getLocation 时出现了定位图标,但并没有得到正确的位置、还是使用上次的位置。如果在微信中通过在聊天中「发送位置」来更新位置信息,就能得到正确的了。


遇到这个问题,真的是一点办法没有,还请官方内部确认下。目前,可能只能考虑通过百度等第三方来获取实时位置了。

最后一次编辑于  2018-12-04
回答关注问题邀请回答
收藏

2 个回答

  • Jason
    Jason
    2018-12-04

    怎么说呢,感觉是有一定概率;或者说,感觉位置缓存更新是有一定机制的。这也使得,这个问题不是必现的;但一旦出现就很难受。


    比如,我很久没更新位置,获取位置就需要较长时间。获取后立即再次获取,就只需要很短时间。这说明第 2 次是从缓存内获得的,或者至少是考虑了缓存信息。


    我比较怀疑是这个缓存机制有问题。

    2018-12-04
    有用
    回复 5
    • 老张
      老张
      2018-12-05

      我一般会在app.js里调用一次wx.getLocation,不做任何处理,就是为了其他页面里第二次调用它得到准确的位置。

      2018-12-05
      回复
    • Jason
      Jason
      2018-12-06

      你机智的。


      不过,事实上,有时候我尝试调用 wx.getLocation 3 次,位置均没有更新。


      调用 wx.openLocation 时,能肉眼看到地图上的点从旧位置移至新位置。之后,再调用 wx.getLocation 就是正确的位置了。

      2018-12-06
      回复
    • 扬
      2019-05-31回复老张

      这样有效果吗 老哥

      2019-05-31
      回复
    • 老张
      老张
      2019-05-31回复

      不知道,我们业务逻辑已经改掉了,不再纠结这个问题了。

      我们的小考勤,改成了全屏的map了,再提供一个button专门刷新位置,让用户自己用眼看,如果不准,你就自己刷新位置吧。

      2019-05-31
      回复
    • 扬
      2019-05-31回复老张

      好吧 我试试,我们现在还有这个需求

      2019-05-31
      回复
  • 是小白啊
    是小白啊
    2018-12-04

    后台进去,是有更新位置的

    2018-12-04
    有用
    回复 1
    • 扬
      2019-06-04

      经纬度是有更新,但是你A点获取次经纬度后 走到B点 大致1KM路程 再次获取到的还是A点附近的经纬度

      2019-06-04
      回复
登录 后发表内容