web-dev-qa-db-fra.com

Fermez tous les popups avec Leaflet.js

Je travaille sur une carte en utilisant Leaflet.js qui utilise un certain nombre de marqueurs (il y aura éventuellement environ 40 marqueurs). Chaque marqueur a une fenêtre contextuelle associée avec des détails. Le comportement par défaut de Leaflet.js semble être d'ouvrir automatiquement au moins une fenêtre contextuelle du marqueur (le dernier marqueur répertorié, je crois).

J'aimerais que tous les fenêtres contextuelles soient fermés lors du chargement initial de la page de carte afin que les utilisateurs doivent cliquer sur les marqueurs pour les ouvrir. Est-ce que quelqu'un sait comment faire ça? J'ai un prototype ici:

http://dev.monographic.org/maps/prototype-10.html

Je vous remercie.

22
Fehler

Il existe une méthode propre à partir de votre objetmappour fermer tous les popups ouverts

map.closePopup();
37
Florian Boudot

J'ai réussi à résoudre mon problème avec ce morceau de code:

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

J'espère que cela aidera quelqu'un à l'avenir.

14
sAm

Supprimez simplement vos appels à .openPopup().

Au lieu de 

L.marker([57.70887, 11.97456]).addTo(map).bindPopup("<b>Ideal Festival</b><br />2004").openPopup();

Utilisation 

L.marker([57.70887, 11.97456]).addTo(map).bindPopup("<b>Ideal Festival</b><br />2004");

Le comportement des clics sera toujours présent (lorsque les utilisateurs cliquent sur ces marqueurs, les popups apparaîtront toujours), mais ces derniers ne seront pas visibles lors du chargement de la page.

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

essayez ceci une fois votre chargement de carte terminé.

1
Venkatesh Nadar
  map.closePopup(); 

n'a pas fonctionné pour moi et a fermé le popup le plus récent, pas tous.

Généralisation de ce que user2304819 a suggéré:

  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);
0
mohsen hs