Leaflet: Einfacher Click-Handler funktioniert nicht für Geojson-Layer auf Leaflet 1.0.0-rc.3

Erstellt am 26. Aug. 2016  ·  4Kommentare  ·  Quelle: Leaflet/Leaflet

Ich mache etwas Ähnliches wie http://jsfiddle.net/tator/em9cLfk4/4/

Dies hat jedoch nichts mit dem Layer-Klick zu tun, der zum Karten-Klick-Handler hochgewirbelt wird. Es geht darum, dass der Ebenenklick einfach nicht mit Code ausgelöst wird, der für 0.7.7 ordnungsgemäß funktioniert.

Ich habe meinen Code auf nur eine Basiskachelebene + eine Überlagerungsebene reduziert, um sicherzustellen, dass es keine Zindex-Probleme mit der Ebenenreihenfolge gibt.

map.on("click") wird immer noch richtig ausgelöst, aber nicht für die GeoJson-Ebene.

function onEachFeatureHandler(feature, layer){
            layer.on('click', function(e){
                     alert("click");
           });
}

overlay = L.geoJson(GeoJSON, {
       onEachFeature: onEachFeatureHandler
});

Ich habe auch zwei verschiedene Möglichkeiten ausprobiert, um das layer.on("click") auszuführen, entweder click als String oder füge einen {"click": handlerFuncName} hinzu. Es macht wie erwartet keinen Unterschied.

Ich habe versucht, die Basiskachelebene vor/nach der Überlagerung hinzuzufügen, und nichts hat sich geändert. Ich habe auch den Click-Handler auf der Karte entfernt, um einen Ereigniskonflikt zu vermeiden. Am Ende habe ich also eine Karte mit nur Tile + Overlay und einem One-Click-Event-Handler, aber trotzdem wird nichts ausgelöst. Der Mauszeiger zeigt an, dass die Ebene überhaupt nicht anklickbar ist.

Ich habe auch die Farben der Überlagerung geändert, um sicherzustellen, dass sie dem Kartenobjekt richtig hinzugefügt wurde. Es liegt auf dem Fliesenleger.

Dies geschieht in den neuesten Versionen von Chrome v52 und Safari 9 auf dem Mac.

Nachdem ich es fast 4 Stunden lang versucht habe ... vermute ich, dass es etwas Dummes in meinem Code sein könnte oder dass es einige API-Änderungen gibt, die ich im Änderungsprotokoll verpasse. Ich würde mich freuen, wenn Sie mir ein paar Tipps geben könnten, was ich falsch gemacht haben könnte. Jeder Einblick wäre willkommen.

Hilfreichster Kommentar

@mourner Nach einigem Nachdenken stelle ich fest, dass ich das CSS nicht auf den neuesten Stand gebracht habe. Dies kann dazu beigetragen haben, dass die zIndex-Ebene nicht korrekt war, oder einige Klickereignisse nicht zugelassen haben. Jetzt scheint alles normal zu sein, nur indem ich das CSS auf die neueste Version aktualisiere. Schließe das Problem.

Alle 4 Kommentare

Können Sie einen genauen minimalen Testfall auf JSFiddle oder Leaflet Playground einrichten, der das Problem reproduziert?

@mourner Ich werde einen Spielplatz mit einem einfachen Geojson ausprobieren und sehen, was passiert. Ich habe den Click-Handler-Code nicht in sehr vereinzelten Beispielen beschädigt. Ich habe sogar das Layer-Objekt im Debugger debuggt ... der Click-Handler wird definitiv hinzugefügt. Auf der Kachel <img> wird ein Click-Event ausgelöst, wenn ich auf die Ebenen klicke.

Ich kann mir keine anderen Faktoren vorstellen, die dies beeinflussen.

@mourner hat es gerade mit rc3 auf dem Spielplatz versucht, die rohe Geojson-Schicht funktioniert immer noch wie beabsichtigt ...

@mourner Nach einigem Nachdenken stelle ich fest, dass ich das CSS nicht auf den neuesten Stand gebracht habe. Dies kann dazu beigetragen haben, dass die zIndex-Ebene nicht korrekt war, oder einige Klickereignisse nicht zugelassen haben. Jetzt scheint alles normal zu sein, nur indem ich das CSS auf die neueste Version aktualisiere. Schließe das Problem.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen