很多时候我们会在后台使用百度地图对地图坐标进行拾取。但是在小程序的时候,小程序使用的是腾讯地图。两者使用的坐标系不同,导致在腾讯地图查看的时候,会有几十米的偏差。
百度地图使用的是BD-09的坐标系,而腾讯高德等使用的是GCJ-02的国标坐标系(也称火星坐标系)。百度地图的BD-90坐标系是根据GCJ-20的坐标系进行二次加密后的,所以两者坐标上,会有偏差。
下面我们通过算法,来把百度的BD-09坐标系还原成GCJ-02的坐标系,让小程序上可以正确显示
function bMapTransqqMap(lng, lat) {
if (!lng || !lat) return {
lng: 0,
lat: 0
}
let x_pi = (3.14159265358979324 * 3000.0) / 180.0;
let x = lng - 0.0065;
let y = lat - 0.006;
let z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
let theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
let lngs = z * Math.cos(theta);
let lats = z * Math.sin(theta);
return {
lng: lngs,
lat: lats
};
}
评论 (0)