>  기사  >  웹 프론트엔드  >  클로저 루프를 사용하여 클릭 이벤트 로드

클로저 루프를 사용하여 클릭 이벤트 로드

坏嘻嘻
坏嘻嘻원래의
2018-09-13 18:07:001576검색

이 글에서는 JS의 for 루프 폐쇄 문제를 해결하는 두 가지 방법을 공유하겠습니다. 도움이 되기를 바랍니다.

최근 프로젝트에서도 지도 기능을 활용한 회사 내부 프로젝트라 바이두 지도의 API를 공부하게 되었어요. Tiantu의 API와 여전히 유사점이 많은 것 같습니다. 기본적인 사용법은 거의 동일합니다. 하지만 Baidu Map의 반응은 Tian Map의 반응보다 훨씬 빠릅니다. 그리고 이제 바이두 지도를 사용하게 되면서 과거 티안 지도를 사용할 때 겪었던 몇 가지 문제점이 좀 더 명확하게 설명되었습니다.


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. 마커 지점을 루프로 표시합니다. 즉시 실행 기능과 클로저 루프를 사용하여 클릭 이벤트를 로드하고 정보 창을 표시하여 라벨 지점에 대한 자세한 정보를 표시합니다.



		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. 클릭하면 마커 정보창이 표시됩니다.



	//显示信息窗口,显示标注点的信息。
	function showInfo(thisMaker,point){
		var sContent =
		&#39;<ul style="margin:0 0 5px 0;padding:0.2em 0">&#39;
		+&#39;<li style="line-height: 26px;font-size: 15px;">&#39;
		+&#39;<span style="width: 50px;display: inline-block;">id:</span>&#39; + point.id + &#39;</li>&#39;
		+&#39;<li style="line-height: 26px;font-size: 15px;">&#39;
		+&#39;<span style="width: 50px;display: inline-block;">名称:</span>&#39; + point.name + &#39;</li>&#39;
		+&#39;<li style="line-height: 26px;font-size: 15px;"><span style="width: 50px;display: inline-block;">查看:</span><a href="&#39;+point.url+&#39;">详情</a></li>&#39;
		+&#39;</ul>&#39;;
		var infoWindow = new BMap.InfoWindow(sContent);  // 创建信息窗口对象
	   	thisMaker.openInfoWindow(infoWindow);   //图片加载完毕重绘infowindow
	   }




Rendering:

클로저 루프를 사용하여 클릭 이벤트 로드


여기에서 클릭하면 정보 창이 표시됩니다. 실제로는 디스플레이 창을 가리키고 마우스를 슬라이드하세요. 디스플레이 위에 창문.

관련 권장 사항:

JS

JS 루프 li에서 for 루프 폐쇄 문제를 해결하여 클릭 이벤트를 추가하는 방법(클로저 적용)


위 내용은 클로저 루프를 사용하여 클릭 이벤트 로드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.