最近在将老项目改版,APP改小程序,使用到地图相关,老项目使用的是百度地图,小程序使用的当然是腾讯自家的地图,结果发现原来的百度地图坐标在腾讯地图显示偏差过大。
原来两个地图用的是两套坐标系,腾讯地图、高德地图用的是GCJ-02坐标,也就是国测局坐标系,而百度是自成一套,BD-09坐标系。
所以相同地点在经纬度在两个坐标系是不一样的,或者说有偏移。
方案1:
对于后台百度地图传过来的经纬度,要做一次转换,转换成腾讯地图的经纬度,再传给小程序显示
// 腾讯经纬度转百度经纬度
function qqMapTransBMap(lng, lat) {
let x_pi = 3.14159265358979324 * 3000.0 / 180.0;
let x = lng;
let y = lat;
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) + 0.0065;
let lats = z * Math.sin(theta) + 0.006;
return {
lng: lngs,
lat: lats
};
}
// 百度经纬度转腾讯经纬度
function bMapTransqqMap(lng, lat) {
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 {
longitude: lngs,
latitude: lats
};
}
方案2:
© 版权声明
站内部分资源由网友投稿或收集于网络,若侵犯了您的合法权益,请联系我们删除
THE END
暂无评论内容