JS:WGS经纬度转BD09经纬度

百度地图API经纬度偏移困扰我几年了。

今天又重新思考了一下,手机 GPS 记录的是 WGS 经纬度,加载到百度地图要转换成 BD09 经纬度。

然后试了一下 BMap.Convertor.translate:http://lbsyun.baidu.com/jsdemo.htm#Translategroup

还没解决 callback 函数全局变量的问题,发现 data.status = 25,查文档 http://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition,坐标个数超过限制!好像最多10个,我条轨迹有3000个点!只能自己找算法了!

找到算法了:https://www.jianshu.com/p/53f00ba897f7



trkpt = xmlDoc.getElementsByTagName('trkpt');
var lon = trkpt[i].getAttribute('lon')*1;	//字符串转数字 *1
var lat = trkpt[i].getAttribute('lat')*1;
//坐标转换:WGS -> GCJ -> BD09
var point = GPS.gcj_encrypt(lat, lon);
point = GPS.bd_encrypt(point.lat, point.lon);
points[i] = new BMap.Point(point.lon, point.lat);

完美解决!

你可能感兴趣的:(JS)