1. 程式人生 > >百度地圖2

百度地圖2

想要 coder enc 對象 構造 服務 百度坐標 ddc 並且

百度地圖(2)

核心類Map:畫地圖必須調用的var map = new BMap.Map("allmap");其中allmap是想要畫地圖的dom節點的id。其中map可以控制整個地圖的縮放、移動、以及是否加入一些自定義的圖片,以及添加點擊事件等等操作都需要這個對象,map是整個地圖的核心對象。

定位

定位的方式有瀏覽器自帶的方式Geolocation,還有根據詳細地址或者經緯度來定位Geocoder

  • Geolocation:是調用了瀏覽器自帶的定位接口,如果瀏覽器不支持會返回null
  • Geocoder:支持經緯度getLocation(point: Point, callback: Function, options: LocationOptions)
    以及地址的方式getPoint(address: String, callback: Function, city: String)

經緯度的定位的坐標是百度的坐標,如果是其他的經緯度可以掉調用百度的逆地址解析成百度坐標,但是這樣定位就會有偏差。

最好的方式是先根據經緯度定位(畫地圖),如果不準確,讓用戶自己輸入地址或者用戶自己操作地圖,來定位。其中地址定位是很準確的。調用Geocoder定位的結果會返回一個GeocoderResult對象,其中的包含了經緯度,省市區,以及周邊的一些地方點surroundingPois,周邊可以做個列表給用戶選擇。

可以說和定位相關的離不開這個對象Geocoder

,可以去官方文檔好好研究一番Geocoder文檔

控件類

控件類就是在現畫出的地圖上添加一些操作面板(按鈕等),操作地圖的縮放,移動,以及切換全景模式等操作。如果要通過代碼的方式操作,完全可以在map這個對象中操作。添加的時候也要通過addControl(control: Control),其實操作這些控件本質上是調用map中的方法。

覆蓋物

覆蓋物最常見的是紅色水滴狀的圖標,或者一些公交的路線,這些就是覆蓋物,而且這些覆蓋物可以定義事件,點擊這些覆蓋物後可以有後續的操作。而且可以自定義覆蓋物(圖片覆蓋物)

IconPoint是一些接口需要用到的參數,用這些構造函數生成的數據符合哪些接口的要求,其實類似接口interface

最後

地圖的接口大多都集成在map這個對象中了,除了定位這些服務類,其他的類都是輔助map中的接口的。百度有哪些功能,看map服務類

如果想獲取地圖中某個點的信息,如我想知道地圖中那個點的經緯度,可以通過給map定義一個點擊事件,點擊事件會返回當前點的信息給回調函數。記錄這些經緯度點,你可以畫路線圖等等

在微信公眾號中用百度地圖:先用的微信的定位獲取經緯度,再用百度的逆地址轉為百度經緯度,最後用轉化後的經緯度去定位以及畫地圖(居中當前定位點),最後的精準定位交給用戶去決定,因為經緯度定位的效果會有誤差,這很有必要。最好下方出現個周邊的列表讓用戶去選擇比較接近的地址,畢竟這些周邊是大眾都知道的。上方一個地址搜索框,根據輸入的地址去定位以及移動地圖的中心點,並且生成一個水滴覆蓋物,當用戶點擊這個水滴覆蓋物,確定最終的定位。其實根據地址去定位是最準確的,但是如果經緯度誤差比較小效果是最好的。

效果:經緯度定位效果最好、如果有誤差根據搜索欄地址去定位、最重要的是用戶可以操作地圖,自主定位。

百度地圖2