微信小程序校正百度地图与腾讯地图经纬度

在实际开发中使用了百度地图在小程序中,与PC端保持一致,API都是百度的,地图底图却是腾讯地图,这个有点坑。

微信小程序校正百度地图与腾讯地图经纬度_第1张图片
微信小程序上地图的显示

最坑的是取到的经纬度也是腾讯地图的,好吧,手工校正

/**
   *腾讯地图转百度地图经纬度
   */
  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
    };
  }

  /*
   * 百度转腾讯
   */
  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
    };
  }

亲测,和百度坐标拾取对比后,误差不超过十米,已经很准了

你可能感兴趣的:(微信小程序校正百度地图与腾讯地图经纬度)