百度地图坐标系对腾讯地图坐标系转换

teaxia
2022-03-08 / 0 评论 / 1,105 阅读 / 正在检测是否收录...

很多时候我们会在后台使用百度地图对地图坐标进行拾取。但是在小程序的时候,小程序使用的是腾讯地图。两者使用的坐标系不同,导致在腾讯地图查看的时候,会有几十米的偏差。
百度地图使用的是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
  };
}
3

评论 (0)

取消