Как добавить маркер на карту с помощью обработчика событий листовки 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); }
- Я думаю, что http://stackoverflow.com/questions/9912145/leaflet-how-to-find-existing-markers-and-delete-markers/24342585#24342585 поможет вам как добавлять, так и ...
Ответ #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); } });
Ответ #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); }
-
4
-
3
-
4
-
10
-
14
-
9
-
5
-
13
-
7
-
10
-
6
-
7
-
3
-
2
-
2
-
1
-
2
-
2
-
8
-
5
-
2
-
5
-
3
-
2
-
1
-
17
-
8
-
7
-
2
-
12
-
2
-
2
-
4
-
3
-
7
-
6
-
2
-
21
-
6
-
4
-
3
-
1
-
3
-
5
-
2
-
6
-
3
-
4
-
3
-
5