Klickereignis auf Leaflet Map auslösen?

14

Ist es möglich, dass ein Klickereignis in einem bestimmten Lat / Lon auf einer Flugblattkarte auftritt?

Ich möchte ein Popup anzeigen, das einem Punkt an einer bestimmten Stelle zugeordnet ist.

Ich habe mehrere Kombinationen versuchte , von map.fireEvent('click', latLon)und map.fire('click', latLon)aber ich kann kein Beispiel oder Referenzen beschreibt diesen Ansatz finden. Ist das eine Sache, die getan werden kann?

Ein Ansatz, den ich versucht habe (und der funktioniert), besteht darin, das Objekt in der Blätterebene zu identifizieren und mit ein Klickereignis auszulösen layer[id].fireEvent('click'). Dies setzt jedoch voraus, dass ich die Objekt-ID kenne und in der Lage sein möchte, nur ein Lat / Lon zu verwenden, um diesen Klick auszulösen.


Ich möchte ein Popup an der angeklickten Stelle öffnen und möchte an dieser Stelle keine Markierung oder ein neues Popup hinzufügen. Ich versuche, ein Klickereignis an einem bestimmten Lat / Lon auszulösen, an dem bereits ein Punkt vorhanden ist, und das Popup auszulösen, das bereits vorhanden ist.

djq
quelle

Antworten:

21

Ich denke, Sie denken, es ist komplexer als Sie denken!

Versuche dies:

var popLocation= new L.LatLng(-42.8585,147.2468);
var popup = L.popup()
    .setLatLng(popLocation)
    .setContent('<p>Hello world!<br />This is a nice popup.</p>')
    .openOn(map);

Bezogen auf die exzellente Dokumentation .

Ich weiß, was du jetzt machen willst. So können Sie ein Popup an einer beliebigen Stelle öffnen, auf die Sie geklickt haben:

map.on('click', function(e) {        
        var popLocation= e.latlng;
        var popup = L.popup()
        .setLatLng(popLocation)
        .setContent('<p>Hello world!<br />This is a nice popup.</p>')
        .openOn(map);        
    });

Letzte Änderung: Ich denke ernsthaft, dass, wenn Sie ein "Klick" -Ereignis auslösen möchten, um etwas zu erreichen, das Ihr Design betrachtet werden muss. Wenn Sie es wirklich wollen, scheint es in Javascript möglich zu sein . Es ist jedoch keine GIS-Frage.

Alex Leith
quelle
Vielen Dank für den Vorschlag. Wissen Sie, ob es möglich ist, dies auszulösen, ohne ein Popup zu erstellen? In meinem Fall füge ich einer Karte 70 Punkte hinzu (binde ein Popup) und möchte eines dieser Popups später auslösen.
3.
Sie können alle Popups erstellen, sie irgendwie / wo speichern und sie dann einfach auf der Karte öffnen. Lesen Sie die Dokumentation und probieren Sie es aus. Ich verstehe nicht, was du versuchst zu tun. Vielleicht sollten Sie Ihre Frage bearbeiten, um Ihren Endpunkt zu definieren?
Alex Leith
Ich verstehe, wie man das Popup öffnet, wenn es in einem Array gespeichert ist. Ich möchte versuchen, es zu öffnen, indem ich auf eine Stelle auf der Karte klicke. Ich werde versuchen, dies in der Frage klarer zu machen.
3.
Sie möchten also das Popup öffnen, das einem Klick am nächsten liegt? Oder öffnen Sie ein Popup an der angeklickten Stelle? Und du willst keine Marker?
Alex Leith
Ich möchte ein Popup an der angeklickten Stelle öffnen und möchte keine Markierungen.
3.
1

Ich verwende die andere Antwort in einer Broschürenkarte, um Benutzern das Senden von Funktionsanfragen basierend auf dem angeklickten Ort in einer Karte zu ermöglichen. Daraufhin wird ein vorab ausgefülltes Google-Formular mit dem Lat Long von dieser Position aus geöffnet. Diese Punkte werden dann mit sheetsee / tabletop auf der Karte angezeigt. Ich habe eine map.hasLayer (meine Anfrageebene) hinzugefügt, damit der Benutzer das Popup nicht immer sieht, wenn auf die Karte geklickt wird:

    map.on('click', function(e) { 
    if (map.hasLayer(requests)) {
        var requestform = e.latlng;
        var formpopup = L.popup();
        .setLatLng(requestform)
        .setContent('<a href=" google form ' + e.latlng.lat + 
                    '" target="_blank">Form</a>') 
        .openOn(map);
    }
});
Malcolm
quelle