传单弹出窗口,设置关闭事件

问题描述 投票:0回答:2

我知道您可以在传单中的

map
对象上设置“弹出窗口关闭”事件,有什么方法可以在每个弹出窗口的基础上设置该事件吗?

如果我有一个从像这样的事件中获取的图层...

var layer = event.layer;

var bound = layer.bindPopup(
  "blah",
  {closeButton: false, closeOnClick: false}
);

var popUp = bound.openPopup();

我想根据条件有条件地为此弹出窗口设置关闭事件。我面临的问题是,当他们绘制形状时,我打开一个弹出窗口以允许他们命名。但是,如果他们在此弹出窗口打开时单击形状,则会运行“单击”事件,该事件将打开另一个弹出窗口以对其进行编辑。我想避免这种情况,这样如果他们关闭第一个弹出窗口而不设置名称,它就会完全删除形状。

javascript popup leaflet
2个回答
30
投票

没有 onClose,但有 onRemove。当您关闭弹出窗口时会触发此操作:

marker.getPopup().on('remove', function() {
    //Your code here
});


0
投票

嗨。我的名字是约翰·阿里亚斯。我是一名地形和地理信息工程师。


这是我的解决方案:


// layer on click event
    layer.on("click", function (e) {
      // get the mouse coordinates
      coordsMap = e.latlng;

      // define the content popup
      let content = "Text Popup or Content";

      // create and display popup on map
      let popup = L.popup()
        .setLatLng(coordsMap)
        .setContent(content)
        .openOn(map);

      // close event popup
      popup.on("remove", function () {
        alert("popup remove");
        //other instructions
      });
    });
© www.soinside.com 2019 - 2024. All rights reserved.