百度地圖API--標註點

來源:互聯網
上載者:User

標註點

普通標註點
標註表示地圖上的點。API提供了預設表徵圖樣式,您也可以通過Icon類來指定自訂表徵圖。Marker的建構函式的參數為Point和MarkerOptions(可選)。注意:當您使用自訂表徵圖時,標註的地理座標點將位於標註所用表徵圖的中心位置,您可通過Icon的offset屬性修改標定位置。
下面的樣本向地圖中心點添加了一個標註,並使用預設的標註樣式。

<script type="text/javascript"src="http://api.map.baidu.com/api?v=2.0&ak=fw4DkI8ZoN3UZsUc5fkkBOQc"></script><script type="text/javascript" src="Global.js"></script><script type="text/javascript">/* * 載入地圖 */function load() {var map = new BMap.Map("container");var point = createPoint(116.404, 39.915);map.centerAndZoom(point, 15);map.enableScrollWheelZoom();addCommonMarker(map);addPersonalMarker(map);}/* * 添加普通標註  */function addCommonMarker(map) {/ /建立標註,引用了Global.js的方法var marker = new BMap.Marker(createPoint(116.404, 39.915)); map.addOverlay(marker); // 向地圖添加標註}</script>
自訂標註點表徵圖
通過Icon類可實現自訂標註的表徵圖,下面樣本通過參數MarkerOptions的icon屬性進行設定,您也可以使用marker.setIcon()方法。
/* * 添加自訂標註  */function addPersonalMarker(map) {//建立一個自訂表徵圖,表徵圖放在類路徑下的imgae檔案夾下var myIcon = new BMap.Icon("image/marker.jpg", createSize(300, 157));// 建立標註var marker = new BMap.Marker(createPoint(116.417, 39.909), {// 將標註的表徵圖指定為自訂的表徵圖icon : myIcon});// marker.setIcon(myIcon); // 這種方式更符合物件導向map.addOverlay(marker); // 將標註添加到地圖中}
監聽標註時間點事件
可以對標註註冊監聽器監聽標註的事件,事件在下一章有詳細講解,這裡介紹一下如何添加一個監聽器。
marker.addEventListener('click', function() {alert('你好,我是一個普通標註~');});   
動態標註點
地圖上的標註可以設定為跳動的標註,乍一想是不是需要些很多控制的js代碼,如果我們自己去實現的話應該是這麼做的的,但是百度地圖API庫中已經實現了,我們只需要一行代碼調用就OK啦。
/* * 添加動態標註  */function addMoveableMarker(map) {var marker = new BMap.Marker(createPoint(108.963536, 34.238584));map.addOverlay(marker); marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳動的動畫}
標註點彙總
當一個地區的標註較多的時候,而地圖的縮放比例不能直觀展示這些標註,可以利用標註彙總來標識,標註彙總用到了BMapLib命名空間下的MarkerClusterer類,下面是產生一個標註彙總的方式。
首先需要引用倆個js檔案:
<script type="text/javascript"src="http://api.map.baidu.com/library/TextIconOverlay/1.2/src/TextIconOverlay_min.js"></script><script type="text/javascript"src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js"></script>/* * 添加點彙總  */function addPointAggregation(map) {var MAX = 10;var markers = [];var point = null;for (var i = 0; i < MAX; i++) {point = createPoint(Math.random() * 40 + 85,Math.random() * 30 + 21);markers.push(new BMap.Marker(point));}//最簡單的用法,產生一個marker數組,然後調用MarkerClusterer類即可。new BMapLib.MarkerClusterer(map, {markers : markers});}
記憶體釋放
在API 1.0版本中,如果您需要在地圖中反覆添加大量的標註,這可能會佔用較多的記憶體資源。如果您的標註在移除後不再使用,可調用Overlay.dispose()方法來釋放記憶體。注意在1.0版本中,調用此方法後標註將不能再次添加到地圖上。自1.1版本開始,您不在需要使用此方法來釋放記憶體資源,API會自動協助您完成此工作。
例如,您可以在標註被移除後調用此方法:
map.removeOverlay(marker);    marker.dispose(); // 1.1 以後版本不需要這樣調用  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.