Javascript 使用传单.js关闭所有弹出窗口

Javascript 使用传单.js关闭所有弹出窗口,javascript,map,popup,Javascript,Map,Popup,我正在使用传单.js制作一张地图,该地图使用了许多标记(最终将有约40个标记)。每个标记都有一个包含详细信息的相关弹出窗口。js的默认行为似乎是自动打开至少一个标记的弹出窗口(我相信是最后列出的标记) 我希望所有的弹出窗口都在地图页面的初始加载时关闭,因此用户必须单击标记才能打开弹出窗口。有人知道怎么做吗?我这里有一个原型: 多谢各位 $(".leaflet-popup-close-button").click() 在地图加载完成后尝试此操作。只需删除对.openPopup()的调用即可 而

我正在使用传单.js制作一张地图,该地图使用了许多标记(最终将有约40个标记)。每个标记都有一个包含详细信息的相关弹出窗口。js的默认行为似乎是自动打开至少一个标记的弹出窗口(我相信是最后列出的标记)

我希望所有的弹出窗口都在地图页面的初始加载时关闭,因此用户必须单击标记才能打开弹出窗口。有人知道怎么做吗?我这里有一个原型:

多谢各位

$(".leaflet-popup-close-button").click()

在地图加载完成后尝试此操作。

只需删除对
.openPopup()
的调用即可

而不是

L.marker([57.70887, 11.97456]).addTo(map).bindPopup("<b>Ideal Festival</b><br />2004").openPopup();
L.marker([57.70887,11.97456]).addTo(map).bindpup(“理想节日
2004”).openPopup();
使用

L.marker([57.70887,11.97456]).addTo(map).bindpoop(“理想节日
2004”);

单击行为仍将存在(当用户单击这些标记时,弹出窗口仍将出现),但页面加载时弹出窗口将不可见。

我通过以下代码解决了我的问题:

$(".leaflet-popup-close-button")[0].click();

希望它对将来的人有所帮助。

有一个干净的方法,可以从您的映射对象中关闭所有打开的弹出窗口

map.closePopup();
不适用于我,关闭了最近的弹出窗口

用户2304819建议的概括:

  var ButtonremoveNotidfications = L.easyButton({
                id: 'ButtonremoveNotidfications',
                states: [{
                    stateName: 'Show',
                    icon: '<strong>Clear notifications</strong>',
                    title: 'Show',
                    onClick: function (btn) { //Below is the closing module
                        var aa = $(".leaflet-popup-close-button").length
                        if (aa > 0) {
                            for (var i = 0; i < aa; i++) {
                                $(".leaflet-popup-close-button")[i].click();
                            }
                        }
                    }
                }]
            });
            ButtonremoveNotidfications.button.style.width = widthbuttonstyle;
            ButtonremoveNotidfications.button.style.height = heightbuttonstyle;
            ButtonremoveNotidfications.button.style.color = 'blue';
            ButtonremoveNotidfications.addTo(map);
var按钮RemoveNotifications=L.easyButton({
id:'按钮删除通知',
国家:[{
stateName:'显示',
图标:“清除通知”,
标题:"秀",,
onClick:function(btn){//下面是关闭模块
变量aa=$(“.传单弹出关闭按钮”)。长度
如果(aa>0){
对于(变量i=0;i
弹出。从(地图)中移除


对我来说是有效的。

我认为最好在执行click()之前先检查dom对象是否存在;如果在执行时没有弹出窗口,这真的很有用-我已经将地图设置为允许打开多个弹出窗口。当打开的数量大于3时,我可以使用此关闭最早打开的弹出窗口。这将为您关闭所有弹出窗口或仅关闭一个?谢谢FlorianBoudot@JoSmo就我而言只有一个。我想关闭所有弹出窗口<代码>map.closePopup()仅关闭最后一个。请看:这可能会有帮助:这不会突出它。它会将其完全移除,从而无法再次打开。这可能是人们所期望的,但可能不是
  map.closePopup(); 
  var ButtonremoveNotidfications = L.easyButton({
                id: 'ButtonremoveNotidfications',
                states: [{
                    stateName: 'Show',
                    icon: '<strong>Clear notifications</strong>',
                    title: 'Show',
                    onClick: function (btn) { //Below is the closing module
                        var aa = $(".leaflet-popup-close-button").length
                        if (aa > 0) {
                            for (var i = 0; i < aa; i++) {
                                $(".leaflet-popup-close-button")[i].click();
                            }
                        }
                    }
                }]
            });
            ButtonremoveNotidfications.button.style.width = widthbuttonstyle;
            ButtonremoveNotidfications.button.style.height = heightbuttonstyle;
            ButtonremoveNotidfications.button.style.color = 'blue';
            ButtonremoveNotidfications.addTo(map);