是不是写反了,还是我用错了
Closed this issue · 3 comments
Jayxiang commented
用你这个转换,反编码还是不对。
然后用的这个是可以的:https://blog.csdn.net/qq_34775102/article/details/87004878
Zws-China commented
latitude:纬度,其数值在0至90度之间。
longitude:经度,其数值在0至180度之间。
util.transformFromWGSToGCJ(这里传纬度, 这里传经度);
Jayxiang commented
我的用法没有错误。
本库的
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。
经尝试用本库会有一些误差。另一个算法则没有误差。
你可以试试。
Zws-China commented
谢谢你,我对比了一下,我这个库确实存在误差,已经修改。谢谢。