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

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

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

小程序获取用户位置:

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 每个服务接口的调用量做有限制。

以上是 微信小程序实现获取用户的准确位置 的全部内容, 来源链接: utcz.com/p/232081.html

回到顶部