2016-05-30 6 views
7

Я пытаюсь использовать Листовку, чтобы получить координаты карты где-то, когда пользователь щелкнул правой кнопкой мыши. Я прошел API-интерфейс Leaflet и до сих пор понял, что мне нужно прослушать событие contextmenu и использовать mouseEventToLatLngmethod, чтобы получить координаты при нажатии. Однако, когда я просматриваю и отлаживаю свой код, я не вижу доступную переменную latLng в любом месте. Я пропустил понимание чего-то в API?Получение координат карты из листовки

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

Что вы хотите сделать "COORDS" переменной от всюду подъезд? –

+0

На самом деле, я хочу получить доступ к коордам из этой функции. Проблема в том, что когда я запускаю код, консоль дает мне сообщение об ошибке, указывающее, что 'mouseEventToLatLng не определен'. – tylerbhughes

ответ

6

Что вы хотите получить, это mousemove event. Это в основном, как вы это делаете,

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

Но один из моих вариантов использования - установить маркер, щелкнув правой кнопкой мыши на карте таким образом, я все еще могу использовать левый клик, чтобы переместить карту. Если я использую mousemove, то он будет постоянно восстанавливать маркер, когда мышь перемещается по карте. Не понял ли я что-то о вашем фрагменте? – tylerbhughes

+0

@RandomlyKnighted Событие «mousemove» на карте не будет постоянно восстанавливать маркер. Вы также можете использовать левый клик, чтобы перемещать карту. Это в основном заключается в том, чтобы зафиксировать, где находится ваш курсор на карте, и перевести его на «latlng». Затем, когда вы щелкните правой кнопкой мыши по карте, он должен создать только маркер, где этот 'latlng' is .. – choz

+1

Спасибо, что помогли! – tylerbhughes

3

координаты правой кнопкой мыши события должны быть непосредственно доступны latlng property из event аргумента "contextmenu" слушателя.

map.on("contextmenu", function (event) { 
    console.log("Coordinates: " + event.latlng.toString()); 
    L.marker(event.latlng).addTo(map); 
}); 

Демо: http://plnkr.co/edit/9vm81YsQxnkAFs35N8Jo?p=preview

+0

Спасибо! Это именно то, что я искал. – tylerbhughes

Смежные вопросы