Leaflet: L'événement .on('popupopen') n'est pas déclenché sur les marqueurs

Créé le 22 sept. 2014  ·  3Commentaires  ·  Source: Leaflet/Leaflet

Bonjour,

LE CONTEXTE
J'ai écrit plusieurs directives AngularJS pour le dépliant. Un pour la carte, un pour le calque, un pour les marqueurs et un pour les popups.

La directive angulaire pour popup, est à l'écoute d'un marqueur à associer.

    .bindPopup(popup)
    .on('dragstart', function () {
        console.log(dragstart");
    })
    .on('dragend', function () {
        console.log("dragend!");
    })
    .on('popupopen', function (popup) {
        console.log("popup opened !", popup);
    });

ATTENDU
Tous les événements doivent être déclenchés.

RÉSULTAT

popupevent n'est pas déclenché ? Les autres sont licenciés.


Notice : 0,7,2
OS : Windows 7
navigateur : Google Chrome 37 & Firefox 32

Commentaire le plus utile

Voici le problème, lorsque vous faites cela

var coordinates = {};
var markerOptions = {};
var marker = L.marker(coordinates), markerOptions );
marker.bindPopup("my content");

La méthode bindPopup() peut avoir un objet String ou Popup. Pour cet exemple, nous passons une chaîne et la méthode créera le bon popup. Si vous transmettez un élément contextuel personnalisé, vous devez d'abord ajouter le marqueur dans la fenêtre contextuelle. Sinon, le popup n'aura jamais son élément source.

La solution finale.

var coordinates = {};
var markerOptions = {};
var marker = L.marker(coordinates), markerOptions );

var popupOptions = {};
// you have to append the marker on the creation of the popup
// so that the popup element will have the marker source.
var popup = L.popup(popupOptions, marker );

// and this will work !
marker
    .bindPopup(popup)
    .on('dragstart', function () {
        console.log(dragstart");
    })
    .on('dragend', function () {
        console.log("dragend!");
    })
    .on('popupopen', function (popup) {
        console.log("popup opened !", popup);
    });

Tous les 3 commentaires

Après quelques tests, le problème venait de notre bibliothèque personnalisée popup.

commentaire avez-vous fait?

22/09/2014 11:39 GMT + 02:00 Pierre Baron [email protected] :

Fermé #2907 https://github.com/Leaflet/Leaflet/issues/2907.

-
Répondez directement à cet e-mail ou consultez-le sur GitHub
https://github.com/Leaflet/Leaflet/issues/2907#event -168346883.

Voici le problème, lorsque vous faites cela

var coordinates = {};
var markerOptions = {};
var marker = L.marker(coordinates), markerOptions );
marker.bindPopup("my content");

La méthode bindPopup() peut avoir un objet String ou Popup. Pour cet exemple, nous passons une chaîne et la méthode créera le bon popup. Si vous transmettez un élément contextuel personnalisé, vous devez d'abord ajouter le marqueur dans la fenêtre contextuelle. Sinon, le popup n'aura jamais son élément source.

La solution finale.

var coordinates = {};
var markerOptions = {};
var marker = L.marker(coordinates), markerOptions );

var popupOptions = {};
// you have to append the marker on the creation of the popup
// so that the popup element will have the marker source.
var popup = L.popup(popupOptions, marker );

// and this will work !
marker
    .bindPopup(popup)
    .on('dragstart', function () {
        console.log(dragstart");
    })
    .on('dragend', function () {
        console.log("dragend!");
    })
    .on('popupopen', function (popup) {
        console.log("popup opened !", popup);
    });
Cette page vous a été utile?
0 / 5 - 0 notes