首页 / 浏览问题 / 其他 / 问题详情
superamp iclient for leaflet点击标记打开弹窗,选择其他标记点击,弹窗中的事件失效了
5EXP 2024年08月27日

弹窗中绑定了点击事件,在点击弹窗A下方的标记时,显示弹窗A(如图),此时点击另一个标签时,弹窗A消失,在点击的标记上显示弹窗B。弹窗B中显示的内容是正确的,但是在popupopen中获取的id值是弹窗A的id并且点击事件失效。刚接触leaflet,请问这个问题如何解决

const point = (arr: number[]) => {
  var array = [arr.latitude, arr.longitude]
  // 设置点标记:[纬度, 经度]
  const marker = L.marker(array)
  // 给标记添加事件
  map.on('popupopen', function(e) {
    setTimeout(function() {  
      var bridgeNameDiv = document.getElementById('popbox');
      bridgeNameDiv.addEventListener('click', function() {  
      var fileId = document.getElementById('popId')
        var obj = {
          id: fileId.innerHTML
        }
        handleEdit(obj)
      });
      }, 0)
  })
  marker.on('click', (e) => {
    if(e.target._popup != undefined){
      console.log('已有弹窗')
      return
    }
    // 弹窗
    var contentHTML = 
      "<div id='popId' style='display: none;'>" + arr.id + "</div>" +
      "<div id='textID' style='text-align: left;font-size: 19px;text-shadow: 1px 1px 0 #ffffff;'>弹窗A</div>" +
    marker.bindPopup(contentHTML).openPopup();
  })
  featureGroup.addLayer(marker)
}

问题关闭原因: 已解决
...