我們經常在使用瀏覽器得到的原始座標直接進行定位的時候,會發現自己居然在湖里或者在大海中。那是什么原因造成的呢?原來,由于我們瀏覽器獲取的原始座標精度不是那么準確,以致于造成了定位上的差異。那么,我們要如何來規避這一問題呢,這時候,我們就要使用到原始座標與百度座標的轉換了。
廢話少說,直接上代碼:
// 百度地圖API功能 //GPS坐標 var x = 113.291986; var y = 30.749021; var ggPoint = new BMap.Point(x,y); //地圖初始化 var bm = new BMap.Map("allmap"); bm.centerAndZoom(ggPoint, 15); bm.addControl(new BMap.NavigationControl()); //添加gps marker和label var markergg = new BMap.Marker(ggPoint); bm.addOverlay(markergg); //添加GPS marker var labelgg = new BMap.Label("未轉換的GPS坐標(錯誤) "+x+","+y,{offset:new BMap.Size(20,-10)}); markergg.setLabel(labelgg); //添加GPS label //坐標轉換完之后的回調函數 translateCallback = function (data){ if(data.status === 0) { var marker = new BMap.Marker(data.points[0]); bm.addOverlay(marker); var label = new BMap.Label("轉換后的百度坐標(正確) "+data.points[0].lng+","+data.points[0].lat,{offset:new BMap.Size(20,-10)}); marker.setLabel(label); //添加百度label bm.setCenter(data.points[0]); } } setTimeout(function(){ var convertor = new BMap.Convertor(); var pointArr = []; pointArr.push(ggPoint); convertor.translate(pointArr, 1, 5, translateCallback) }, 1000);
運行結果:
網站無須三方授權 · 安全穩定、維護方便