调用第三方导航传入的坐标必须是WGS-84 坐标,所以需要将坐标转换成 wgs坐标,下面提供坐标转换的js方法,经过测试,与实际坐标位定位,基本误差不大,可以做导航使用,如项目要求非常精确的位置。我目前项目解决方案是 ,导航到目的地,然后在APP中的地图中查看具体的精确位置。
>
文件请下载附件
WGS-84:是国际标准,GPS坐标(Google Earth使用、或者GPS模块)
GCJ-02:中国坐标偏移标准,Google Map、高德、腾讯使用
BD-09:百度坐标偏移标准,Baidu Map使用
//WGS-84 to GCJ-02
GPS.gcj_encrypt();
//GCJ-02 to WGS-84 粗略
GPS.gcj_decrypt();
//GCJ-02 to WGS-84 精确(二分极限法)
// var threshold = 0.000000001; 目前设置的是精确到小数点后9位,这个值越小,越精确,但是javascript中,浮点运算本身就不太精确,九位在GPS里也偏差不大了
GSP.gcj_decrypt_exact();
//GCJ-02 to BD-09
GPS.bd_encrypt();
//BD-09 to GCJ-02
GPS.bd_decrypt();
//求距离
GPS.distance();
示例:
document.write("GPS: 39.933676862706776,116.35608315379092<br />");
var arr2 = GPS.gcj_encrypt(39.933676862706776, 116.35608315379092);
document.write("中国:" + arr2['lat']+","+arr2['lon']+'<br />');
var arr3 = GPS.gcj_decrypt_exact(arr2['lat'], arr2['lon']);
document.write('逆算:' + arr3['lat']+","+arr3['lon']+' 需要和第一行相似(目前是小数点后9位相等)');
7***@qq.com
obj是在什么地方定义的?
2016-07-14 11:25
老火
obj是ajax回来的数据
2016-08-16 15:50
尔梭
貌似在IOS上使用系统自带地图导航只能用GCJ-02才准确,用WGS-84偏差太大,但是安卓上必须要用WGS-84才准确
2016-11-02 09:21
9***@qq.com
回复 老火:你好,为什么在var tmp = GPS.bd_decrypt(parseFloat(obj.baidu_lat),parseFloat(obj.baidu_lng)); 这一行老是报错呢
2017-02-16 16:24
9***@qq.com
能把你的那个gps.js给我吗 我估计是这个原因
2017-02-16 16:43