Как добавить маркер на карту с помощью обработчика событий листовки map.on ('click', function)

Я пытаюсь использовать обработчик событий, чтобы 9X_vanillajs добавить маркер на карту. Я могу управлять 9X_.js этим с помощью функции обратного вызова, но 9X_javascript-library не тогда, когда я отделяю функцию от обработчика 9X_js событий.

Обратный вызов (http://fiddle.jshell.net/rhewitt/U6Gaa/7/):

map.on('click', function(e){ var marker = new L.marker(e.latlng).addTo(map); }); 

Отдельная функция 9X_ecmascript (http://jsfiddle.net/rhewitt/U6Gaa/6/):

function newMarker(e){ var marker = new L.marker(e.latlng).addTo(map); } 

24
1

  • Я думаю, что http://stackoverflow.com/questions/9912145/leaflet-how-to-find-existing-markers-and-delete-markers/24342585#24342585 поможет вам как добавлять, так и ...
2
Общее количество ответов: 2

Ответ #1

Ответ на вопрос: Как добавить маркер на карту с помощью обработчика событий листовки map.on ('click', function)

в вашем коде скрипки ваша функция находится 9X_event-handlers в неправильной области. попробуйте переместить 9X_vanilla-javascript функцию внутри функции карты, а не в ее 9X_javascript собственную область видимости ... т.е. вместо:

}); function addMarker(e){ // Add marker to map at click location; add popup window var newMarker = new L.marker(e.latlng).addTo(map); } 

использовать

function addMarker(e){ // Add marker to map at click location; add popup window var newMarker = new L.marker(e.latlng).addTo(map); } }); 

22
0

Ответ #2

Ответ на вопрос: Как добавить маркер на карту с помощью обработчика событий листовки map.on ('click', function)

Основная проблема заключается в том, что 9X_javascript-library переменная map, которую вы используете внутри 9X_js функции addMarker, не является переменной, в которой 9X_vanilla-js вы храните созданную карту. Есть несколько 9X_event-handler способов решить эту проблему, но самым простым 9X_javascript может быть присвоение созданной карты переменной 9X_javascript map, объявленной в первой строке. Вот код:

var map, newMarker, markerLocation; $(function(){ // Initialize the map // This variable map is inside the scope of the jQuery function. // var map = L.map('map').setView([38.487, -75.641], 8); // Now map reference the global map declared in the first line map = L.map('map').setView([38.487, -75.641], 8); L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA', maxZoom: 18 }).addTo(map); newMarkerGroup = new L.LayerGroup(); map.on('click', addMarker); }); function addMarker(e){ // Add marker to map at click location; add popup window var newMarker = new L.marker(e.latlng).addTo(map); } 

15
0