JS 实现地图坐标相互转换,采用百度地图API的 BMap.Convertor(),所以使用时需要引入百度地图 v3 / v2 API,转换精准,无偏移!
GPS ( wgs84 ) 转 百度(bd09ll)
百度 ( bd09ll ) 转 高德/腾讯/MapABC( gcj02 )
高德/腾讯/MapABC( gcj02 ) 转 百度 ( bd09ll )
搜狗,图吧,51地图 转 百度 ( bd09ll )
搜狗,图吧,51地图 转 高德/腾讯/MapABC( gcj02 )
1. 引入百度地图API v3 /v2
<script type="text/javascript" src="http://api./api?v=3.0&ak=秘钥"></script>
2. 引入JS代码片段( wgs84 转 bd09ll)
//坐标系转换 @author qiyulin @date .10.17var converMap = {i:0,groups:[],arr:[],init:function(points){console.log("初始化点:",points);var total = 0;var groupCount = 0;if (points.length % 10 > 0) {groupCount = (points.length / 10) + 1;}else {groupCount = (points.length / 10);}for(var i=0;i<groupCount;i++){var pos = [];for(var j=0;j<10;j++){if(total<points.length){var point = new BMap.Point(points[(i * 10) + j].lng,points[(i * 10) + j].lat);pos.push(point);}total++;}converMap.groups.push(pos);}},start:function(cb){if(converMap.i<converMap.groups.length){var pos = converMap.groups[converMap.i];if(pos.length>0){var convertor = new BMap.Convertor();/*** 地图转换函数* translate( points, form, to, callback )** points : 坐标点数量,1次不能超过10个** from : 参数说明* 1:GPS标准坐标;* 2:搜狗地图坐标;* 3:火星坐标(gcj02),即高德地图、腾讯地图和MapABC等地图使用的坐标;* 4:3中列举的地图坐标对应的墨卡托平面坐标;* 5:百度地图采用的经纬度坐标(bd09ll);* 6:百度地图采用的墨卡托平面坐标(bd09mc);* 7:图吧地图坐标;* 8:51地图坐标;** to : 参数说明* 3:火星坐标(gcj02),即高德地图、腾讯地图及MapABC等地图使用的坐标;* 5:百度地图采用的经纬度坐标(bd09ll);* 6:百度地图采用的墨卡托平面坐标(bd09mc);** 这里:from = 1 , to = 5 是从 wgs84 坐标转 Bd09ll* */convertor.translate(pos, 1, 5, function(data){for (var i = 0; i < data.points.length; i++) {converMap.arr.push( data.points[i] );}converMap.i++;//递归converMap.start(cb);});}else{converMap.i++;//递归converMap.start(cb);}}else{console.log("转换结果:",converMap.arr);cb(converMap.arr)}}}
3. 使用方式
//arrP = {lng:92.32101749,lat:39.25321963} = new BMap.Point(92.32101749,39.25321963)var arrP = [{lng:92.32101749,lat:39.25321963}, {lng:92.32381195,lat:39.23467412}, {lng:92.33689469,lat:39.18944389}, {lng:92.33462026,lat:39.16550173}, {lng:92.32438307,lat:39.14640229}, {lng:92.34150646,lat:39.12996929}, {lng:92.36486257,lat:39.12714225},{lng:92.78888514,lat:39.19405955}, {lng:92.84311121,lat:39.18927591}, {lng:92.88139011,lat:39.20919785}, {lng:92.90605774,lat:39.21617208}]// 初始化,加载需要转换的点 arrPconverMap.init(arrP);// 执行转换,并返回转换结果 arrP2converMap.start(function(arrP2){//conver resultconsole.log(arrP2); });
4. 输出结果
感谢您的支持,写的文章如对您有所帮助,开源不易,请您打赏,谢谢啦~
如果觉得《JS实现坐标系转换(wgs84 bd09ll gcj02)百度 GPS 高德 腾讯地图相互转换》对你有帮助,请点赞、收藏,并留下你的观点哦!