微信小程序获取用户当前位置的坐标经纬度

更新日期: 2020-07-31 阅读次数: 5573 字数: 323 分类: 微信小程序

背景

在获取与地理位置相关的数据时,需要传递用户当前位置的坐标。

api

https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.getLocation.html

使用微信小程序位置 API 的注意事项

wx.getLocation 需要授权 scope.userLocation,并且必须在 app.json 中配置地理位置用途说明。例如,

"permission": {
    "scope.userLocation": {
      "desc": "您的位置信息将用于被您老婆随时监控" 
    }
}

wgs84 与 gcj02 坐标系的区别

在调用 wx.getLocation 时,可以传递 type 参数:

  • wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标
  • 地图相关使用的坐标格式应为 gcj02
  • 小程序开发工具中定位模拟使用IP定位,可能会有一定误差。且工具目前仅支持 gcj02 坐标。

说明:

  • WGS84 坐标系。即地球坐标系,国际通用坐标系
  • GCJ02 坐标系。即火星坐标系,WGS84坐标系加密后的坐标系;Google国内地图、高德、QQ地图使用
  • BD09 坐标系。即百度坐标系,GCJ02坐标系加密后的坐标系

所以如果小程序服务后台使用的是高德的接口,前端就需要使用 gcj02 坐标系。

无法授权的情况

  • 一种是用户拒绝授权
  • 一种是分享朋友圈,打开之后,无法进行授权操作

所以需要兼容这种无法拿到坐标的情况。

可以在 success 回调函数中,setData,然后在 complete 中统一发起请求。

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式