微信小程序可以获取两种坐标系的经纬度,分别为WGS84(大地坐标系)和GCJ02(国测局坐标系)而百度却是在其基础上进行加密形成了自己的一套坐标系bd09(百度坐标系),如果直接用微信小程序获取的经纬度坐标渲染到百度地图的话就会造成较大的误差,所以需要对前两种类型的坐标系进行转换。
wx.getLocation({
type: 'wgs84',
//type:'gcj02'
success(res) {
const latitude = res.latitude
const longitude = res.longitude
const speed = res.speed
const accuracy = res.accuracy
}
百度坐标转换Web服务API
在使用该API之前你需要在百度地图开放平台进行注册并创建一个服务端的应用,获取你的ak。
随后可以发送请求将你通过wx.getLocation()获取的非百度坐标系的经纬度进行转换
wx.request({
url: 'http://api.map.baidu.com/geoconv/v1/',
method: "GET",
data: {
coords: '' + longitude + ',' + latitude + '',
from: 1,
to: 5,
ak: "你的ak"
},
Headers: {
'content-type': 'application/x-www-form-urlencoded'
},
success: function (res) {
app.globalData.latitude = res.data.result[0].y
app.globalData.longitude = res.data.result[0].x
},
fail: function (res) {
console.log(res.code)
},
})
res.data.result[0].x和res.data.result[0].y就是经过转换后的bd09百度坐标系的经纬度,可直接在百度地图上进行渲染,误差较小。当然网上也有很多坐标转换的工具类,但是我测试之后发现不是很好使,这种方式仅供大家参考,可以作为一种消除误差的方式。