新聞中心
百度地圖API有兩種坐標(biāo)系,一種是百度經(jīng)緯度,一種是摩卡托坐標(biāo)系。在本章你將學(xué)會:

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)江川,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
1、如何相互轉(zhuǎn)換這兩種坐標(biāo);
2、使用該坐標(biāo)進(jìn)行反地址解析;
3、坐標(biāo)附近全部POI的查詢;
4、計算兩點間的距離。
最終畫面效果圖
百度地圖API常用兩種坐標(biāo)系,一是球面坐標(biāo)系,又稱百度坐標(biāo),即point;第二就是平面坐標(biāo)系,又稱摩卡托坐標(biāo),即pixel。
為了方便用戶調(diào)用,API中的參數(shù)大多為百度經(jīng)緯度,又稱球面坐標(biāo)。而在后臺計算時,為了加快運(yùn)算速度,一般采取摩卡托坐標(biāo)系,即平面坐標(biāo)。(有了平面坐標(biāo),用戶能自己快速而海量地計算兩點的距離。)
1、百度經(jīng)緯度和摩卡托坐標(biāo)的相互轉(zhuǎn)換
MercatorProjection類,通過MapType的getProjection方法獲得實例。類參考:
百度經(jīng)緯度轉(zhuǎn)換為摩卡托(worldCoordinate.x和worldCoordinate.y就是平面坐標(biāo)的x和y)
varprojection1 = map.getMapType().getProjection();
varworldCoordinate = projection1.lngLatToPoint(pt);
摩卡托轉(zhuǎn)換為百度經(jīng)緯度(LngLat.lng和LngLat.lat就是經(jīng)緯度)
- varprojection2 = map.getMapType().getProjection();
- varLngLat = projection2.pointToLngLat(mctXY);
2、使用坐標(biāo)進(jìn)行反地址解析
由于百度地圖API只支持百度經(jīng)緯度的反地址解析,所以,必須先將摩卡托坐標(biāo)轉(zhuǎn)換為百度經(jīng)緯度,再使用如下方法。
- vargc = newBMap.Geocoder();
- gc.getLocation(point, function(rs){
- varaddComp = rs.addressComponents;
- alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber);
- });
- });
反地址解析可以返回如下數(shù)據(jù):
3、坐標(biāo)附近全部POI的查詢
詳細(xì)教程請參照文章《【百度地圖API】如何用圓形搜索獲取中心點周圍100米內(nèi)全部關(guān)鍵點?如天安門附近所有的餐廳、加油站、賓館、大廈等》:http://www.cnblogs.com/milkmap/archive/2011/09/16/2178907.html
4、計算兩點間距離的三種方法
通過本章介紹的經(jīng)緯度轉(zhuǎn)換的工具,我們得到如下的一組數(shù)據(jù)。
起點:
摩卡托坐標(biāo)x:12057394.71
摩卡托坐標(biāo)y:2589680.88
經(jīng)緯度lng: 108.312241
經(jīng)緯度lat: 22.787823
終點:
摩卡托坐標(biāo)x:12058626.7
摩卡托坐標(biāo)y:2592552.85
經(jīng)緯度lng: 108.323308
經(jīng)緯度lat: 22.811744
(A) 通過百度地圖API調(diào)用(這里只能使用百度經(jīng)緯度),map.getDistance(pointA,pointB),可以得到距離為:
alert(map.getDistance(newBMap.Point(108.312241,22.787823),newBMap.Point(108.323308,22.811744)));
(B) 自己利用球面坐標(biāo)計算兩點距離的方法:
設(shè)地球半徑為R,地心為0,球面上兩點A、B的球面坐標(biāo)為A(α1,β1),B(α2,β2),α1、α2∈[-π,π],β1、β2∈[-π/2,π/2 ],
AB =R·arccos[cosβ1cosβ2cos(α1-α2)+sinβ1sinβ2]
利用勾股定理與正弦定理則可求出AB兩點間的直線距離,在利用正弦定理可求出AB兩點與地球0點夾角的度數(shù),再利用如下公式:角EOD的度數(shù)/360度=E與D之間的球面距離/大圓周長,則可求出AB的球面距離。
(C) 自己利用平面坐標(biāo)系計算兩點距離的方法:(可以自己后臺運(yùn)算)
由百度經(jīng)緯度得到摩卡托坐標(biāo)后,能輕松計算出X和Y的值。***用勾股定理求得Z。
alert(Math.sqrt(Math.pow((12057394.71 - 12058626.7),2) + Math.pow((2589680.88 - 2592552.85),2)));
全部源代碼:
摩卡托坐標(biāo)的反地址解析 摩卡托坐標(biāo)x:
摩卡托坐標(biāo)y:
原文鏈接:http://www.cnblogs.com/milkmap/archive/2012/01/31/2333875.html
【編輯推薦】
- 百度地圖API之如何制作公交導(dǎo)航
- 百度地圖API開發(fā)指南
- 百度地圖API如何批量轉(zhuǎn)換為百度經(jīng)緯度
- 百度地圖API如何給自定義覆蓋物添加事件
- 詳解百度地圖API之自定義地圖類型
當(dāng)前題目:百度地圖API中如何用好摩卡托坐標(biāo)
路徑分享:http://www.dlmjj.cn/article/coicsdh.html


咨詢
建站咨詢
