1. 程式人生 > >百度地圖API一:百度地圖上迴圈顯示標註點。使用閉包迴圈載入點選事件

百度地圖API一:百度地圖上迴圈顯示標註點。使用閉包迴圈載入點選事件

本文記錄:百度地圖上迴圈顯示標註點marker。使用立即執行函式和閉包迴圈載入點選事件顯示資訊視窗顯示該標註點的更多資訊。

最近一個專案也要用到地圖功能,公司內部的專案,就去研究了一下百度地圖的API。 感覺跟天地圖的API還是有很多的相似之處。 基本的使用方式 是差不太多的。不過百度地圖反應要比天地圖快不少。 而且現在來用百度地圖,以前用天地圖時候的一些問題也有了更清晰的解釋。

1.準備資料。點的資訊。

		var points = [
		{"lng":116,"lat":40,"url":"http://www.baidu.com","id":50,"name":"p1"},
		{"lng":117,"lat":31,"url":"http://www.taobao.com","id":2,"name":"p2"},
		{"lng":116,"lat":34,"url":"http://www.google.com","id":3,"name":"p3"}
		]

2.載入地圖。中心點和顯示級別預設中國。
		var map = new BMap.Map("container"); 
		map.centerAndZoom(new BMap.Point(103.388611,35.563611), 5);//設定中心點和顯示級別。中國。
		map.enableScrollWheelZoom();//滾輪放大縮小。

3.迴圈顯示標註點marker。使用立即執行函式和閉包迴圈載入點選事件顯示資訊視窗顯示該標註點的更多資訊。
		function addMarker(points){  // 建立圖示物件   

			// 建立標註物件並新增到地圖   
			for(var i = 0,pointsLen = points.length;i <pointsLen;i++){
				var point = new BMap.Point(points[i].lng,points[i].lat);	
				var  marker = new BMap.Marker(point);   
				map.addOverlay(marker); 
				//給標註點新增點選事件。使用立即執行函式和閉包
				(function() {
					var thePoint = points[i];
					marker.addEventListener("click",function(){
						showInfo(this,thePoint);
					});
				})();

			}

		}  

4.點選顯示標註點markers的資訊視窗。
	//顯示資訊視窗,顯示標註點的資訊。
	function showInfo(thisMaker,point){
		var sContent =
		'<ul style="margin:0 0 5px 0;padding:0.2em 0">'
		+'<li style="line-height: 26px;font-size: 15px;">'
		+'<span style="width: 50px;display: inline-block;">id:</span>' + point.id + '</li>'
		+'<li style="line-height: 26px;font-size: 15px;">'
		+'<span style="width: 50px;display: inline-block;">名稱:</span>' + point.name + '</li>'
		+'<li style="line-height: 26px;font-size: 15px;"><span style="width: 50px;display: inline-block;">檢視:</span><a href="'+point.url+'">詳情</a></li>'
		+'</ul>';
		var infoWindow = new BMap.InfoWindow(sContent);  // 建立資訊視窗物件
	   	thisMaker.openInfoWindow(infoWindow);   //圖片載入完畢重繪infowindow
	   }


效果圖:


這裡只是點選顯示資訊視窗,其實懸停顯示視窗,滑鼠滑過顯示視窗。

或者點選 跳轉什麼的。都是可以做的,差別不大。

第一篇結束。下一篇講根據標註點的座標範圍載入地圖時自適應地圖顯示級別和中心點。