Leaflet: .on('popupopen') Ereignis wird nicht auf Markern ausgelöst

Erstellt am 22. Sept. 2014  ·  3Kommentare  ·  Quelle: Leaflet/Leaflet

Hallo,

KONTEXT
Ich habe mehrere AngularJS-Direktiven für Leaflet geschrieben. Eine für die Karte, eine für den Layer, eine für Markierungen und eine für Popups.

Die Winkeldirektive für Popup wartet auf einen Marker, dem zugeordnet werden soll.

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

ERWARTET
Alle Events sollten gefeuert werden.

ERGEBNIS

popupevent nicht gefeuert? Die anderen werden entlassen.


Prospekt : 0,7,2
Betriebssystem: Windows 7
Browser: Google Chrome 37 & Firefox 32

Hilfreichster Kommentar

Hier ist das Problem, wenn Sie dies tun

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

Die Methode bindPopup() kann entweder ein String- oder ein Popup-Objekt haben. In diesem Beispiel übergeben wir einen String und die Methode erstellt das richtige Popup. Wenn Sie ein benutzerdefiniertes Popup-Element übergeben, müssen Sie den Marker zuvor an das Popup anhängen. Andernfalls hat das Popup nie sein Quellelement.

Das finale Resultat.

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);
    });

Alle 3 Kommentare

Nach einigen Tests kam das Problem von unserer benutzerdefinierten Popup-Bibliothek.

Kommentar avez vous fait?

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

Geschlossen #2907 https://github.com/Leaflet/Leaflet/issues/2907.


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/Leaflet/Leaflet/issues/2907#event -168346883.

Hier ist das Problem, wenn Sie dies tun

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

Die Methode bindPopup() kann entweder ein String- oder ein Popup-Objekt haben. In diesem Beispiel übergeben wir einen String und die Methode erstellt das richtige Popup. Wenn Sie ein benutzerdefiniertes Popup-Element übergeben, müssen Sie den Marker zuvor an das Popup anhängen. Andernfalls hat das Popup nie sein Quellelement.

Das finale Resultat.

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);
    });
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen