2016-05-30 10 views
7

Próbuję użyć ulotki, aby uzyskać współrzędne mapy miejsca klikniętego przez użytkownika. Przechodzę przez API Ulotki i do tej pory zorientowałem się, że muszę posłuchać zdarzenia contextmenu i użyć mouseEventToLatLngmethod, aby uzyskać współrzędne po kliknięciu. Jednakże, kiedy przechodzę i debuguję mój kod, nie widzę dostępnej zmiennej latLng w dowolnym miejscu. Czy tęskniłem za zrozumieniem czegoś w API?Uzyskiwanie współrzędnych mapy z ulotki

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

Co chcesz to zrobić "coords" zmienne dostępne z wszędzie? –

+0

Właściwie to czekam na dostęp do współrzędnych z tej funkcji. Problem polega na tym, że uruchomię kod, a konsola wyświetli komunikat o błędzie z informacją, że 'mouseEventToLatLng nie jest zdefiniowany'. – tylerbhughes

Odpowiedz

6

To, co chcesz uzyskać, to wydarzenie mousemove. Jest to w zasadzie jak to zrobić,

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

Ale jednym z moich przypadków użycia jest ustawienie znacznika poprzez kliknięcie prawym przyciskiem myszy na mapie w ten sposób, że nadal mogę użyć lewego kliknięcia, aby przesunąć mapę. Jeśli użyjemy myszy, to ciągle będzie resetować znacznik, gdy mysz porusza się po mapie. Czy źle zrozumiałem coś na temat twojego fragmentu? – tylerbhughes

+0

@RandomlyKnighted Zdarzenie 'mousemove' mapy nie będzie w sposób ciągły resetować znacznika. Możesz także użyć lewego kliknięcia, aby przesunąć mapę. To, co w zasadzie robi, to uchwycić położenie kursora na mapie i przetłumaczyć go na 'latlng'. Następnie, po kliknięciu prawym przyciskiem myszy na mapie, należy utworzyć tylko znacznik, w którym znajduje się 'latlng'. – choz

+1

Dzięki, że bardzo pomogło! – tylerbhughes

Powiązane problemy