Zws-China/wechat-Coordinate

是不是写反了,还是我用错了

Closed this issue · 3 comments

用你这个转换,反编码还是不对。
然后用的这个是可以的:https://blog.csdn.net/qq_34775102/article/details/87004878

latitude:纬度,其数值在0至90度之间。
longitude:经度,其数值在0至180度之间。
util.transformFromWGSToGCJ(这里传纬度, 这里传经度);

我的用法没有错误。
本库的

function transformFromGCJToBaidu(latitude, longitude) {
  var pi = 3.14159265358979324;

  var z = Math.sqrt(longitude * longitude + latitude * latitude) + 0.00002 * Math.sqrt(latitude * pi);
  var theta = Math.atan2(latitude, longitude) + 0.000003 * Math.cos(longitude * pi);
  var a_latitude = (z * Math.sin(theta) + 0.006);
  var a_longitude = (z * Math.cos(theta) + 0.0065);

  return { latitude: a_latitude, longitude: a_longitude };
}

其他的

gcj02tobd09 (lng, lat) {
    var x_PI = 3.14159265358979324 * 3000.0 / 180.0;
    var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);
    var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
    var bd_lng = z * Math.cos(theta) + 0.0065;
    var bd_lat = z * Math.sin(theta) + 0.006;
    return [bd_lng, bd_lat]
  }

对比可以看到设置的pi不一样,本库用的Math.sqrt转的z,他用的sin。
经尝试用本库会有一些误差。另一个算法则没有误差。
你可以试试。

谢谢你,我对比了一下,我这个库确实存在误差,已经修改。谢谢。