百度地图 InfoWindow上添加点击事件

一、应用场景

在地图上展示多个点位信息,点击弹出自定义详细信息(InfoWindow),然后在InfoWindow上添加点击事件操作。例如:

二、主要方法

        var markerlist=data;//点位信息list
	for (var i = 0; i < markerlist.length; i++) {
		var marker = new BMap.Marker(new BMap.Point(markerlist[i].Latitude, markerlist[i].Longitude));  // 创建标注
		var content ='<span>自定义字段1:</span>'+ markerlist[i].Type_Name+
		    '</br><span>自定义字段2:</span>'+ markerlist[i].Type_EnName+
		    '</br><input type="button" id="markerbtn" value="点击弹出" data-sid="'+ markerlist[i].Dict_Code +'" />';
		map.addOverlay(marker);// 将标注添加到地图中
		addClickHandler(content, marker);
	}
        //给点位添加点击事件
	function addClickHandler(content, marker) {
		marker.addEventListener("click", function (e) {
			openInfo(content, e);
		});
	}
        //打开信息窗口
	function openInfo(content, e) {
		var p = e.target;
		var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);
		var infoWindow = new BMap.InfoWindow(content);  // 创建信息窗口对象 
		map.openInfoWindow(infoWindow, point); //开启信息窗口
            //判断窗口的打开状态
		if (!infoWindow.isOpen()) {
                //如果没有打开,则监听打开事件,获取按钮,添加事件
			infoWindow.addEventListener("open", function () {
				document.getElementById("markerbtn").onclick = function (e) {
					alert("门店编号:"+e.target.dataset.sid);
				}
			})
		} else {//如果已经打开,直接获取按钮,添加事件
			document.getElementById("markerbtn").onclick = function (e) {
				alert("门店编号:" + e.target.dataset.sid);
			}
		}
	}

三、最终效果

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值