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

文章目录

    背景

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

    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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式