2016-05-30 10 views
7

erhalten Ich versuche, mit Leaflet die Kartenkoordinaten zu erhalten, auf die ein Benutzer mit der rechten Maustaste geklickt hat. Ich habe die Leaflet-API durchsucht und bis jetzt habe ich herausgefunden, dass ich das contextmenu-Ereignis anhören und mouseEventToLatLngmethod verwenden muss, um die Koordinaten zu erhalten, wenn darauf geklickt wird. Wenn ich jedoch meinen Code durchsuche und debugge, sehe ich nirgendwo eine zugängliche latLng-Variable. Habe ich etwas in der API nicht verstanden?Die Kartenkoordinaten aus dem Flugblatt

function setMarkers() { 
     document.getElementById("transitmap").addEventListener("contextmenu", function(event) { 
      // Prevent the browser's context menu from appearing 
      event.preventDefault(); 

      var coords = L.mouseEventToLatLng(event); 
     }); 
    }; 
+0

Was Sie wollen, ist "coords" Variable erreichbar von überall zu machen? –

+0

Eigentlich möchte ich auf Coords innerhalb dieser Funktion zugreifen. Das Problem ist, wenn ich den Code ausführe, gibt mir die Konsole eine Fehlermeldung, die besagt, dass "mouseEventToLatLng nicht definiert ist". – tylerbhughes

Antwort

6

Was Sie erhalten möchten, ist mousemove Ereignis. Dies ist im Grunde, wie Sie es tun,

var lat, lng; 

map.addEventListener('mousemove', function(ev) { 
    lat = ev.latlng.lat; 
    lng = ev.latlng.lng; 
}); 

document.getElementById("transitmap").addEventListener("contextmenu", function (event) { 
    // Prevent the browser's context menu from appearing 
    event.preventDefault(); 

    // Add marker 
    // L.marker([lat, lng], ....).addTo(map); 
    alert(lat + ' - ' + lng); 

    return false; // To disable default popup. 
}); 
+0

Aber einer meiner Anwendungsfälle besteht darin, den Marker zu setzen, indem ich mit der rechten Maustaste auf die Karte klicke. Auf diese Weise kann ich immer noch mit der linken Maustaste die Karte verschieben. Wenn ich mousemove verwende, wird der Marker kontinuierlich zurückgesetzt, wenn sich die Maus auf der Karte bewegt. Habe ich etwas falsch verstanden? – tylerbhughes

+0

@RandomlyKnighted Das Ereignis 'mousemove' der Karte wird den Marker nicht kontinuierlich zurücksetzen. Sie können auch die linke Maustaste verwenden, um die Karte zu verschieben. Was das im Grunde genommen macht, ist zu erfassen, wo sich der Cursor auf der Karte befindet, und es in 'latlng' zu übersetzen. Dann, wenn Sie mit der rechten Maustaste auf die Karte klicken, sollte es nur die Markierung erstellen, wo das "latlng" ist .. – choz

+1

Vielen Dank, dass hat sehr geholfen! – tylerbhughes

Verwandte Themen