2021年5月11日13:23:17
首先是坐标系的问题
WGS84 :地理坐标系统,Google Earth和中国外的Google Map使用,另外,目前基本上所有定位空间位置的设备都使用这种坐标系统,例如手机的GPS系统。
GCJ-02:投影坐标系统,也就是我们平常所说的火星坐标系,Google Map中国、高德和腾讯地图使用,这个是中国自己在WGS84基础上加密而成,目的显而易见。
BD09:投影坐标系统,百度地图使用,在GCJ-02基础上二次加密而成。
国内各地图API坐标系统比较
API | 坐标系 |
---|---|
百度地图API | 百度坐标 |
腾讯搜搜地图API | 火星坐标 |
搜狐搜狗地图API | 搜狗坐标 |
阿里云地图API | 火星坐标 |
图吧MapBar地图API | 图吧坐标 |
高德MapABC地图API | 火星坐标 |
灵图51ditu地图API | 火星坐标 |
当然你可以用过坐标转换来提高精度,但是
https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.getLocation.html
wx.getLocation返回的精度只有五位数,相比其他地图API返回8-10位或者更多,即使转换也不是一个好办法
后台使用的是腾讯地图定位的gps,小程序默认返回的是wgs84,经过转换依然偏差还是很大,解决精度的办法就是
wx.getLocation({ type: ‘gcj02‘, success (res) { const latitude = res.latitude const longitude = res.longitude const speed = res.speed const accuracy = res.accuracy } })
即使开启高精度 isHighAccuracy: true 依然没什么屁用
gcj02的坐标就是腾讯本身使用的坐标体系,所以在微信接口内部转换的精度损失会很小,经过测试,基本定位精度会显示在0.01KM,基本不影响用户使用
参考
链接:https://www.jianshu.com/p/c39a2c72dc65
链接:https://www.jianshu.com/p/c39a2c72dc65