我在之前的文章利用html5獲取經緯度并且在百度地圖中顯示位置中使用了百度地圖的API來顯示html5獲取的地理位置,在文中我說過這樣的話,我說百度地圖的準確度不怎么精確,偏差很大。這里我要更正下:
國際經緯度坐標標準為WGS-84,國內必須至少使用國測局制定的GCJ-02,對地理位置進行首次加密。百度坐標在此基礎上,進行了BD-09二次加密措施,更加保護了個人隱私。百度對外接口的坐標系并不是GPS采集的真實經緯度,需要通過坐標轉換接口進行轉換。
由此可以看出小編之前冤枉了百度地圖,所以如果對您有誤導還請見諒。所以寫了篇關于百度地圖API坐標轉換的文章,并且對之前的模型做了修正。
實現代碼:
- //在百度 map中顯示地址
- var map = new BMap.Map("map_canvas");
- var point = new BMap.Point(longitudeP , latitudeP); // 創建點坐標
- map.centerAndZoom(point, 15);// 初始化地圖,設置中心點坐標和地圖級別
- var marker = new BMap.Marker(point);
- map.addOverlay(marker);
- BMap.Convertor.translate(point,0,translateCallback); //真實經緯度轉成百度坐標
回調函數代碼:
- //坐標轉換完之后的回調函數
- function translateCallback(point1){
- var marker1 = new BMap.Marker(point1);
- map.addOverlay(marker1);
- var label = new BMap.Label("轉換后的百度坐標",{offset:new BMap.Size(20,-10)});
- marker1.setLabel(label); //添加百度label
- map.setCenter(point1);
- }
這是新的效果圖:
可以看出轉換出的效果還是相當精確的,并且從我這里的demo來看要比谷歌地圖精確的多!所以如果也有像我一樣的用戶發現調用baidu map坐標有偏差的話,很有可能就是沒有進行坐標轉換。
關于這個demo:
在線查看demo 猛擊這里下載這個demo
解壓密碼:
malagis.com
PS:注意,密碼是malagis.com,沒有前面的http,不要從瀏覽器直接復制啊,親!
該文章在 2014/11/22 12:26:30 編輯過