我的popups
打开了多个(444)map
。
我试过了:
$(".leaflet-popup-close-button").each(function (index) {
$(".leaflet-popup-close-button")[index].click();
});
但是这样,并非所有人都被关闭了。只有一半被删除。正好一半。所以第一次222被删除,第二次111被删除。
为什么会这样?
答案 0 :(得分:1)
我看到你正在尝试做什么,但这似乎不是一个好主意。你实际上(以编程方式)导致了444次点击,这些点击并不存在。如果有一天您决定跟踪用户对这些项目的点击次数,那么您将遇到问题。
如果您尝试将类添加到强制它们的那些444 leaflet-popup-close-button
的公共父级,通过CSS折叠/关闭,该怎么办?
这样的事情对于你正在尝试做的事情来说是一个更好的解决方案。
顺便说一句,检查他们的docs似乎这些弹出窗口都在新图层上打开,因此您可能只需要移除该图层,所有图片都将消失。
来自他们的文档:
使用Map#openPopup打开弹出窗口,同时确保一次只打开一个弹出窗口(推荐用于可用性),或者使用Map#addLayer打开任意数量的弹出窗口。
进一步检查您有addLayer
和removeLayer
。无论你做什么,我建议你避免所有那些以编程方式点击。
答案 1 :(得分:1)
这就是我解决问题的方法:
var firstLayer = true;
map.eachLayer(function (layer) {
// do something with the layer
if (firstLayer) {
firstLayer = false;
} else {
map.removeLayer(layer);
}
//console.log(layer);
});
我有3层,第一层是显示我的地图的主要层,这就是为什么它不能被删除。我删除了第二个和第三个,这两个层都有多个弹出窗口。
感谢@rafaelbiten,他指出了我正确的方向(层)。
答案 2 :(得分:1)
最新版本的Leaflet:
关闭弹出窗口的正确方法是使用内置的Simple Bayesian Network via Monte Carlo Markov Chain ported to PyMC3:
map.closePopup();
如果您有多个具有不同弹出窗口的图层(例如在OP的情况下),那么您可以遍历图层并关闭每个图层上的弹出窗口:
map.eachLayer(function (layer) {
layer.closePopup();
});