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

小程序获取用户位置:
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 每个服务接口的调用量做有限制。
发布评论
发布评论前请先 登录。
0 评论
点赞
分享
收藏
评论列表 0

暂无评论




