百度地图经纬度转换
一、使用公式进行转换
优点:转换快
缺点:会有一定偏差
二、使用百度地图自带的convertor转换
优点:偏差小
缺点:网络延时,转换慢
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;} #l-map{height:100%;width:78%;float:left;border-right:2px solid #bcbcbc;} #r-result{height:100%;width:20%;float:left;} </style> <script type="text/javascript" src="http://api.map.baidu.com/api?ak=申请的key&v=2.0"></script> <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script> <title>GPS转百度</title> </head> <body> <div id="allmap"></div> </body> </html> <script type="text/javascript"> //GPS坐标 var xx = 30.521302; var yy = 114.345211; var gpsPoint = new BMap.Point(xx,yy); //地图初始化 var bm = new BMap.Map("allmap"); bm.centerAndZoom(gpsPoint, 15); bm.enableScrollWheelZoom(true); bm.addControl(new BMap.NavigationControl()); //添加谷歌marker和label var markergps = new BMap.Marker(gpsPoint); bm.addOverlay(markergps); //添加GPS标注 var labelgps = new BMap.Label("我是GPS标注哦",{offset:new BMap.Size(20,-10)}); markergps.setLabel(labelgps); //添加GPS标注 //坐标转换完之后的回调函数 translateCallback = function (point){ var marker = new BMap.Marker(point); bm.addOverlay(marker); var label = new BMap.Label("我是百度标注哦",{offset:new BMap.Size(20,-10)}); marker.setLabel(label); //添加百度label bm.setCenter(point); console.log("转化为百度坐标为:"+point.lng + "," + point.lat); } setTimeout(function(){ BMap.Convertor.translate(gpsPoint,0,translateCallback); //真实经纬度转成百度坐标 }, 2000); </script>
三、coordtransform 坐标转换
地址:https://github.com/wandergis/coordtransform
按作者给出的示例用法,测试了几组坐标的
gps转百度:测试结果和我们平台转换后的结果基本一致,只有最后1~2位小数不同,用的应该是同一种公式;
百度转gps:超过3位小数,开始出现不同,定位时需要取5位小数,存在一定误差