Meine erste Antwort hat anscheinend nicht funktioniert und ich stehe jetzt vor dem gleichen Problem. Hier ist ein neuer Ansatz:
Die Broschüre unterstützt ein Ereignis namens contextmenu
. Wie in der Leaflet-Ereignisdokumentation hier zu finden .
Wird ausgelöst, wenn der Benutzer die rechte Maustaste auf der Karte drückt, wird verhindert , dass das Standard-Browser-Kontextmenü angezeigt wird, wenn sich Listener für dieses Ereignis befinden.
Also theoretisch der Code
marker.on('contextmenu', function(e) {
this.openPopup();
});
sollte gut funktionieren. Aber offenbar hinkt die Umsetzung hinter der Dokumentation. Ab sofort (Faltblatt 0.4.5) wird das contextmenu
Ereignis auf Markern anscheinend noch nicht unterstützt, obwohl es auf Polylinienobjekten einwandfrei funktioniert.
Es scheint Arbeit in der Pipeline zu sein, um diese Funktion in naher Zukunft zu aktivieren (siehe Diskussionen hier und hier ). Ich denke, wir können nur hoffen, dass Leaflet schnell daran arbeitet und das Event in der nächsten Version aktiviert ...
Bearbeiten:
Ignorieren Sie, was ich über das Warten auf die Implementierung gesagt habe. Wenn Sie den neuesten Entwicklungs-Master-Zweig herunterladen und selbst eine Broschüre erstellen, erhalten Sie volle Unterstützung für contextmenu
Ereignisse auf Markern. Viel Spaß beim Codieren.
Fgysin setzt Monica wieder ein
quelle
Versuchen Sie diese interne Funktion:
Es sollte den Trick machen.
PS Ich habe das in keiner Dokumentation gefunden, aber ich habe gesehen, dass es in einem Patch verwendet wird. Benutzung auf eigene Gefahr. ;)
Edit: Ich habe auch diese interne Funktion gefunden
Das scheint sehr ähnlich zu sein wie
event.preventDefault()
in jQuery.quelle
L.DomEvent.preventDefault(event);
. Nach dem, was ich gesehen habe (siehe die Leaflet.js-Quelle), sollte dies dempreventDefault()
von jQuery bereitgestellten sehr ähnlich sein ... Probieren Sie es aus! :)Ich habe übrigens eine Lösung zum Stoppen des Ereignisses.
Wenn beispielsweise ein Ereignis wie folgt erstellt wird
map.on("click", onMapClick);
, kann das Ereignis mit diesem Code gestoppt werden.map.off("click", onMapClick);
quelle