日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
百度地圖API中如何用好摩卡托坐標(biāo)

  百度地圖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)緯度)

 
 
 
 
  1.   varprojection2 = map.getMapType().getProjection();  
  2.   varLngLat = projection2.pointToLngLat(mctXY); 

  2、使用坐標(biāo)進(jìn)行反地址解析

  由于百度地圖API只支持百度經(jīng)緯度的反地址解析,所以,必須先將摩卡托坐標(biāo)轉(zhuǎn)換為百度經(jīng)緯度,再使用如下方法。

 
 
 
 
  1.   vargc = newBMap.Geocoder();  
  2.   gc.getLocation(point, function(rs){  
  3.   varaddComp = rs.addressComponents;  
  4.   alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber);  
  5.   });  
  6.   }); 

  反地址解析可以返回如下數(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)));

全部源代碼:

 
 
 
 
  1.    
  2.    
  3.    
  4.    
  5.   摩卡托坐標(biāo)的反地址解析 
  6.    
  7.  
  8.    
  9.   
 
  •    
  •   

    摩卡托坐標(biāo)x:

     
  •   

    摩卡托坐標(biāo)y:

     
  •   

     
  •   

     
  •   

     
  •   

     
  •   
  •  
  •   
  •  
  •    
  •    
  •    
  • 原文鏈接:http://www.cnblogs.com/milkmap/archive/2012/01/31/2333875.html

    【編輯推薦】

    1. 百度地圖API之如何制作公交導(dǎo)航
    2. 百度地圖API開發(fā)指南
    3. 百度地圖API如何批量轉(zhuǎn)換為百度經(jīng)緯度
    4. 百度地圖API如何給自定義覆蓋物添加事件
    5. 詳解百度地圖API之自定義地圖類型

    當(dāng)前題目:百度地圖API中如何用好摩卡托坐標(biāo)
    路徑分享:http://www.dlmjj.cn/article/coicsdh.html