百度地圖2
百度地圖(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
控件類
控件類就是在現畫出的地圖上添加一些操作面板(按鈕等),操作地圖的縮放,移動,以及切換全景模式等操作。如果要通過代碼的方式操作,完全可以在map
這個對象中操作。添加的時候也要通過addControl(control: Control)
,其實操作這些控件本質上是調用map
中的方法。
覆蓋物
覆蓋物最常見的是紅色水滴狀的圖標,或者一些公交的路線,這些就是覆蓋物,而且這些覆蓋物可以定義事件,點擊這些覆蓋物後可以有後續的操作。而且可以自定義覆蓋物(圖片覆蓋物)
像Icon
、Point
是一些接口需要用到的參數,用這些構造函數生成的數據符合哪些接口的要求,其實類似接口interface
最後
地圖的接口大多都集成在map
這個對象中了,除了定位這些服務類
,其他的類都是輔助map
中的接口的。百度有哪些功能,看map
和服務類
如果想獲取地圖中某個點的信息,如我想知道地圖中那個點的經緯度,可以通過給map
定義一個點擊事件,點擊事件會返回當前點的信息給回調函數。記錄這些經緯度點,你可以畫路線圖等等
在微信公眾號中用百度地圖:先用的微信的定位獲取經緯度,再用百度的逆地址轉為百度經緯度,最後用轉化後的經緯度去定位以及畫地圖(居中當前定位點),最後的精準定位交給用戶去決定,因為經緯度定位的效果會有誤差,這很有必要。最好下方出現個周邊的列表讓用戶去選擇比較接近的地址,畢竟這些周邊是大眾都知道的。上方一個地址搜索框,根據輸入的地址去定位以及移動地圖的中心點,並且生成一個水滴覆蓋物,當用戶點擊這個水滴覆蓋物,確定最終的定位。其實根據地址去定位是最準確的,但是如果經緯度誤差比較小效果是最好的。
效果:經緯度定位效果最好、如果有誤差根據搜索欄地址去定位、最重要的是用戶可以操作地圖,自主定位。
百度地圖2