我在之前的文章利用html5獲取經(jīng)緯度并且在百度地圖中顯示位置中使用了百度地圖的API來顯示html5獲取的地理位置,在文中我說過這樣的話,我說百度地圖的準(zhǔn)確度不怎么精確,偏差很大。這里我要更正下:
國(guó)際經(jīng)緯度坐標(biāo)標(biāo)準(zhǔn)為WGS-84,國(guó)內(nèi)必須至少使用國(guó)測(cè)局制定的GCJ-02,對(duì)地理位置進(jìn)行首次加密。百度坐標(biāo)在此基礎(chǔ)上,進(jìn)行了BD-09二次加密措施,更加保護(hù)了個(gè)人隱私。百度對(duì)外接口的坐標(biāo)系并不是GPS采集的真實(shí)經(jīng)緯度,需要通過坐標(biāo)轉(zhuǎn)換接口進(jìn)行轉(zhuǎn)換。
由此可以看出小編之前冤枉了百度地圖,所以如果對(duì)您有誤導(dǎo)還請(qǐng)見諒。所以寫了篇關(guān)于百度地圖API坐標(biāo)轉(zhuǎn)換的文章,并且對(duì)之前的模型做了修正。
實(shí)現(xiàn)代碼:
- //在百度 map中顯示地址
- var map = new BMap.Map("map_canvas");
- var point = new BMap.Point(longitudeP , latitudeP); // 創(chuàng)建點(diǎn)坐標(biāo)
- map.centerAndZoom(point, 15);// 初始化地圖,設(shè)置中心點(diǎn)坐標(biāo)和地圖級(jí)別
- var marker = new BMap.Marker(point);
- map.addOverlay(marker);
- BMap.Convertor.translate(point,0,translateCallback); //真實(shí)經(jīng)緯度轉(zhuǎn)成百度坐標(biāo)
回調(diào)函數(shù)代碼:
- //坐標(biāo)轉(zhuǎn)換完之后的回調(diào)函數(shù)
- function translateCallback(point1){
- var marker1 = new BMap.Marker(point1);
- map.addOverlay(marker1);
- var label = new BMap.Label("轉(zhuǎn)換后的百度坐標(biāo)",{offset:new BMap.Size(20,-10)});
- marker1.setLabel(label); //添加百度label
- map.setCenter(point1);
- }
這是新的效果圖:

可以看出轉(zhuǎn)換出的效果還是相當(dāng)精確的,并且從我這里的demo來看要比谷歌地圖精確的多!所以如果也有像我一樣的用戶發(fā)現(xiàn)調(diào)用baidu map坐標(biāo)有偏差的話,很有可能就是沒有進(jìn)行坐標(biāo)轉(zhuǎn)換。
關(guān)于這個(gè)demo:
在線查看demo 猛擊這里下載這個(gè)demo
解壓密碼:
malagis.com
PS:注意,密碼是malagis.com,沒有前面的http,不要從瀏覽器直接復(fù)制啊,親!
該文章在 2014/11/22 12:26:30 編輯過