首页 > 解决方案 > 如何使用 Leaflet 关闭多个弹出窗口?

问题描述

我从这里暴露的黑客中找到了我正在寻找的行为(可能有多个弹出窗口并在用户点击地图时关闭它们)http://bl.ocks.org/mpmckenna8/9395643

不幸的是,这个 hack 不适用于最新的 1.6.0 版本。也许有多种选项可以提供这种行为,但我还没有找到。

我准备了一个 jsfiddle 来探索这个:https ://jsfiddle.net/PBrockmann/3j40ychf/

var popup1 = L.popup({
  minWidth: 100,
  closeOnClick: false,
  autoClose: false
}).setContent("marker1");

L.circleMarker([51.5072, 0.1275]).addTo(map).bindPopup(popup1);

也来自https://observablehq.com/@pbrockmann/untitled/2

欢迎对此提供任何帮助。

标签: popupleaflet

解决方案


此代码将关闭所有 L.CircleMarkers 上的弹出窗口 - 是否足够接近?

map.on('click', function(e) {
   map.eachLayer(function(layer) {
    if (layer instanceof L.CircleMarker) {
        layer.closePopup()
     }
   })
});

推荐阅读