微信小程序实现获取用户的准确位置

发布于 2019-03-22 10:33:19 字数 1665 浏览 3883 评论 0

微信小程序有能力获取到用户的具体位置,但是函数获取到的是经纬度,再转化为具体的物理位置就有很多问题,经常听别的开发者说定位不准,就是这个经纬度转物理位置出的问题。

微信小程序实现获取用户的准确位置

小程序获取用户位置:

wx.getLocation({
  type: 'wgs84',
  success: function(res) {
    var latitude = res.latitude
    var longitude = res.longitude
    var speed = res.speed
    var accuracy = res.accuracy
  }
})

wx.getLocation(OBJECT) 获取当前的地理位置、速度。当用户离开小程序后,此接口无法调用;当用户点击 显示在聊天顶部 时,此接口可继续调用。

这样获取到的定位不是很准确,这样的原因是转百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间没有进行互转。

当前互联网地图的坐标系现状

地球坐标 (WGS84)

国际标准,从专业GPS 设备中取出的数据的坐标系
国际地图提供商使用的坐标系

火星坐标 (GCJ-02)也叫国测局坐标系

中国标准,从国行移动设备中定位获取的坐标数据使用这个坐标系
国家规定: 国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。

百度坐标 (BD-09)

百度标准,百度 SDK,百度地图,Geocoding 使用,本来就乱了,百度又在火星坐标上来个二次加密。

开发过程需要注意的事

从设备获取经纬度(GPS)坐标

  • 如果使用的是百度 SDK 那么可以获得百度坐标(BD09)或者火星坐标(GCJ02),默认是 BD09
  • 如果使用的是 IOS 的原生定位库,那么获得的坐标是 WGS84
  • 如果使用的是高德 SDK,那么获取的坐标是 GCJ02

经纬度转地理位置

如果使用 腾讯地图,腾讯地图有一个专门针对小程序的 JSSDK ,使用起来自非常的方便:

1、引入SDK核心类

var QQMapWX = require('qqmap-wx-jssdk.js');
var qqmapsdk;

2、实例化API核心类

qqmapsdk = new QQMapWX({
  key: '申请的key'
});

3、调用接口

var address = qqmapsdk.reverseGeocoder({
  location:{
    longitude: e.longitude,
    latitude: e.latitude
  },
  success: (res)=>{
    console.log(res);
  }
})

你需要到腾讯地图申请开发者密钥,每个 Key 每个服务接口的调用量做有限制。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文