我們經(jīng)常在使用浏覽器得到的原始座标直接進(jìn)行定位的時白理(shí)候,會(huì)發(fā)現自市妹己居然在湖裡(lǐ)或者在大海中。那是什麼(me)原因造成(ch舊技éng)的呢?原來,由于我們浏覽器獲取的原始座标精度不是話市那麼(me)準确,以緻于造成(說還chéng)了定位上的差異。那麼(me),我們要如何來規避這(z議文hè)一問題呢,這(zhè)時讀請(shí)候,我們就(jiù)要使用到吧放原始座标與百度座标的轉換了。
廢話少說(shuō),直接上代碼:
// 百度地圖API功能(néng) //G志路PS坐标 var x = 113.291986; 銀司 var y = 30.749021; 靜什 var ggPoint = new BMap.Point(x,y飛看); //地圖初始化 var bm = n劇新ew BMap.Map("allmap"); 間車 bm.centerAndZoom(ggPoi多喝nt, 15); bm.addC身海ontrol(new BMap.NavigationControl費畫()); //添加gps marker和label門家 var markergg = new BMap.Marker(g好請gPoint); bm.addOverlay(ma白舊rkergg); //添加GPS 多去marker var labelgg做山 = new BMap.Label("未轉換的GPS坐标(錯誤) "+x從得+","+y,{offset:new BMap.Siz山日e(20,-10)}); markergg.set知妹Label(labelgg); 睡白//添加GPS label //坐标轉換完之後(hòu)的回物件調函數 translateCallback = func議他tion (data){ if(data.s藍銀tatus === 0) { var mar短長ker = new BMap.Mark線金er(data.points[0]); 鐵讀 bm.addOverlay(marker); 友多 var label = new 生女BMap.Label("轉換後(hòu)的百度坐标(正确) "+da線去ta.points[0].lng+","+d又能ata.points[0].lat,場請{offset:new BMap.Size(20,-機好10)}); marker.setLabel(label)跳黃; //添加百度label 工如 bm.setCenter(d我月ata.points[0]); } } 說新 setTimeout(function(){ 銀國 var convertor = new BMap門線.Convertor(); 空東 var pointArr =船村 []; pointArr.push(ggPoint)他那; convertor.translate路得(pointArr, 1, 5, translateCall好門back) }, 1000);
運行結果:
網站無須三方授權 · 安全穩定、維護方便