成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解百度地圖API之地圖標注

開發 前端
本文將向大家介紹百度地圖API的標注(Marker)的使用方法和一些實現細節。希望對大家有所幫助。

[[44116]]

本文將向大家介紹百度地圖API的標注(Marker)的使用方法和一些實現細節。

  標注概述

  標注(Marker)是用來表示一個點位置的可見元素,每個標注自身都包含地理信息。比如你在西單商場位置添加了一個標注,不論地圖移動、縮放,標注都會跟隨一起移動,保證其始終指向正確的地理位置。

從上面的圖可以看出,不論地圖如何變化標注始終指向“西單商場”的位置。

  如何知道某個點的坐標?

  上例中我們在西單商場位置添加了一個標注,那么我是如何知道它的坐標點呢?可以通過API的事件機制來獲取:

  1.   map.addEventListener('click', function(e){  
  2.   console.log(e.point);  
  3.   }); 

  我們在map對象上添加了一個click事件的監聽函數,當點擊地圖上某個位置時,監聽函數通過控制臺把當前點擊的位置輸出出來(注意需要有控制臺的支持,比如firebug,如果沒有控制臺則可使用alert把point的lng和lat屬性輸出出來)。此外,你也可以使用API提供的坐標拾取工具來完成(http://dev.baidu.com/wiki/static/map/API/tool/getPoint/),它支持檢索并且點擊地圖上任意位置時會出現該位置的坐標。

  標注元素組成

  從DOM元素構成角度看,一個完整的標注是由以下幾個部分組成的:

  標注點擊區域

  標注圖標

  標注陰影

  下面是示意圖:

  在地圖API實現中,這三個DOM元素分別位于不同的容器中,這些容器可以通過map.getPanes()方法獲得,其中markerMouseTarget就是標注點擊區域所在容器、markerPane為標注圖標所在容器,markerShadow為標注陰影所在圖層。你可能會在自定義覆蓋物時需要這些容器對象,這里只需要知道Marker的各個部分是如何放置的即可。

  自定義標注圖標

  標注的圖標是可以自定義的,通過Icon類可以自定義標注的圖標,比如我希望使用下面這個圖片作為標注圖標:

  已知這個圖標大小為20x32。我們初始化地圖,接著定義Icon,并賦給一個Marker實例:

  1.   varmap =newBMap.Map('container');  
  2.   map.centerAndZoom(newBMap.Point(116.380797, 39.918497), 18);  
  3.   var icon = new BMap.Icon('pin.png'new BMap.Size(20, 32), {  
  4. anchor: new BMap.Size(10, 30)  
  5.   });varmkr =newBMap.Marker(newBMap.Point(116.38075,39.918986), {  
  6.   icon: icon  
  7.   });  
  8.   map.addOverlay(mkr); 

  我們給定icon所需圖片的url,接著是圖片的尺寸,另外我們還增加了anchor屬性,這個是干什么用的呢?在自定義標注圖標時有一點需要注意的就是標注的定位點(anchor),通俗的講就是要指定圖片的哪個位置是與標注真正的位置對應在一起。我們通過下面的圖示來說明:

  我們獲取到地圖上一個位置(上圖中標注下端所在的黑色小方塊),那么我也希望我標注中間下端指向這個位置,這個就需要通過anchor來調節。anchor的意義如下圖所示:

即定位點距離圖片左上角的偏移量。

  如果不給anchor的話,API會自動獲取圖片中心點作為anchor位置:

我們看到標注圖片中心的位置覆蓋在那個小方塊區域。

  除了anchor之外,還有一個infoWindowAnchor屬性,它是用來控制信息窗口開啟的位置的(注意這里調用的是Marker的openInfoWindow方法,而不是Map的openInfoWindow方法),默認情況下它和icon的anchor是一個位置:

  標注被InfoWindow的底角擋住了,通過infoWindowAnchor屬性就可以改變開啟位置:

  1.   varicon =newBMap.Icon('pin.png', newBMap.Size(20, 32), {  
  2.   anchor: newBMap.Size(10, 30),  
  3.   infoWindowAnchor: newBMap.Size(10, 0)  
  4.   }) 

  再看看效果:

尖角位置已經發生了改變。

  標注拖拽

  標注支持拖拽,并且可以配置是否有動畫效果,我們修改創建標注的代碼:

  1.   varmkr =newBMap.Marker(newBMap.Point(116.38075,39.918986), {  
  2.   icon: icon,  
  3.   enableDragging: true,  
  4.   raiseOnDrag: true}); 

  這里開啟了拖拽功能以及響應的動畫效果。如果此時拖拽地圖你會得到如下效果:

通過監聽標注的dragend事件,你可以知道拖拽結束后標注的地理位置:

  1.   mkr.addEventListener('dragend', function(e){  
  2.   alert(e.point.lng +', '+e.point.lat);  
  3.   }) 

  標注陰影

  為了增加立體感,可以單獨給標注添加陰影,當然你也可以把陰影直接畫在icon所用的圖片上,但是由于陰影和標注本身在一起,所以就不建議使用任何動畫效果,否則會缺乏真實感。陰影可以通過MarkerOptions的shadow屬性配置,類型也是一個Icon實例。具體使用方法和icon屬性一樣,這里就不贅述了。

原文鏈接:http://www.cnblogs.com/jz1108/archive/2011/09/15/2152122.html

【編輯推薦】

  1. 揭秘Google+技術架構
  2. 硅谷“老黃忠”程序員:Google+設計者上榜
  3. 架構師 如何從夢想變成現實?
  4. 談談對于企業級系統架構的理解
  5. 怎么成為一個軟件架構師
責任編輯:彭凡 來源: 博客園
相關推薦

2011-09-29 11:00:54

百度地圖API

2011-09-26 10:05:19

百度地圖API

2011-10-09 11:07:40

百度地圖API

2011-10-21 10:16:25

百度地圖API

2011-10-21 09:28:25

百度地圖API

2021-06-15 14:33:00

高德百度騰訊

2011-10-24 14:01:29

API

2011-09-16 14:39:02

百度地圖API

2012-02-01 09:33:36

百度地圖API

2013-04-08 14:59:54

Android學習筆記百度地圖Overlay

2022-03-27 10:04:23

Angular8項目vue

2013-04-08 14:46:42

Android學習筆記百度地圖

2011-05-25 14:36:17

2012-02-03 14:01:15

地圖

2011-10-21 09:11:41

百度地圖API

2011-12-29 16:18:14

API

2020-12-11 22:02:00

百度地圖Apollo

2020-11-26 15:09:49

數據安全百度地圖機器學習

2010-09-03 09:28:30

2012-03-08 14:20:05

HTML 5
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人午夜电影网 | 狠狠涩| 一区在线观看 | 国产乱码精品一区二三赶尸艳谈 | 中文字幕高清 | 99re6在线视频精品免费 | 黄片毛片免费看 | 波多野结衣在线观看一区二区三区 | 丁香婷婷久久久综合精品国产 | 日本五月婷婷 | 中文字幕丁香5月 | 国产精品毛片无码 | 一级片免费在线观看 | 五月天天色 | japanhd美女动| 国产精品久久国产精品99 gif | 欧美成年黄网站色视频 | 国产精品1区 | 成人自拍视频网站 | 久日精品 | 国产精品久久久久久久久久免费看 | 日本男人天堂 | 欧美日韩专区 | 国产高清视频一区二区 | 日韩一级 | 国产精品久久久久久久久久久久久久 | 国产欧美一区二区三区久久 | 欧美精品一二三 | 一区二区三区国产好 | 久久一| 精品国产一区二区三区久久 | 日韩在线一区二区三区 | 男人的天堂亚洲 | 男女激情网| а天堂中文最新一区二区三区 | 日本三级电影免费 | 亚洲一区二区中文字幕 | 亚洲综合在线视频 | 国产四虎 | 91精品综合久久久久久五月天 | 蜜桃视频在线观看免费视频网站www |