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

小程序获取用户位置:
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坐标系之间没有进行互转。
国际标准,从专业GPS 设备中取出的数据的坐标系
国际地图提供商使用的坐标系
中国标准,从国行移动设备中定位获取的坐标数据使用这个坐标系
国家规定: 国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。
百度标准,百度 SDK,百度地图,Geocoding 使用,本来就乱了,百度又在火星坐标上来个二次加密。
从设备获取经纬度(GPS)坐标
如果使用 腾讯地图,腾讯地图有一个专门针对小程序的 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 每个服务接口的调用量做有限制。

