Ответ 1
Я нашел решение:
function onClick(e) {alert(this.getLatLng());}
использовал метод getLatLng() маркера
var map = L.map('map');
var marker = L.marker([10.496093,-66.881935]).on('click', onClick);
function onClick(e) {alert(e.latlng);}
marker.addTo(map)
когда я нажимаю маркер, появляется следующее сообщение: undefined
но если я поместил его в карту переменных, это сработает! (показывает широту и долготу)
map.on('click', onClick);
кто-нибудь знает, почему в маркере нет работает?
Я нашел решение:
function onClick(e) {alert(this.getLatLng());}
использовал метод getLatLng() маркера
Вышеуказанный ответ правилен и справедливо принят. Однако, похоже на @snowgage, мне нужно было немного больше ясности, поэтому на случай, если кто-то еще сделает это:
Листовка позволяет событиям стрелять практически на все, что вы делаете на своей карте. В этом случае маркер.
Итак, вы можете создать маркер для каждого вопроса выше:
L.marker([10.496093,-66.881935]).addTo(map).on('mouseover', onClick);
Затем создайте функцию onClick:
function onClick(e) {
alert(this.getLatLng());
}
Теперь, когда вы наведете указатель на этот маркер, он выдает предупреждение о текущем lat/long. ОДНАКО, вы могли бы сделать 'click', 'dblclick' и т.д. Вместо "mouseover" и вместо предупреждения lat/long вы можете использовать js в теле onClick, чтобы сделать что-нибудь еще, что вы хотите.
Ниже приведена документация: http://leafletjs.com/reference.html#events
Дополнительная информация: Общей потребностью является передача идентификатора объекта, представленного маркером, на некоторый вызов ajax с целью получения дополнительной информации с сервера.
Кажется, что когда мы делаем:
marker.on('click', function(e) {...
e
указывает на MouseEvent, который не позволяет нам попасть в объект-маркер. Но есть встроенный объект this
, который, как ни странно, требует от нас использовать this.options
для доступа к объекту options
, который позволяет нам передавать все, что нам нужно. В приведенном выше случае мы можем передать некоторый идентификатор в опции, скажем objid
, а затем в указанной выше функции мы можем получить значение, вызвав: this.options.objid
Здесь jsfiddle с вызовом функции: https://jsfiddle.net/8282emwn/
var marker = new L.Marker([46.947, 7.4448]).on('click', markerOnClick).addTo(map);
function markerOnClick(e)
{
alert("hi. you clicked the marker at " + e.latlng);
}
Немного поздно для вечеринки, нашел это, ища пример события щелчка маркера. Ошибка undefined, которую получил исходный плакат, потому что функция onClick указана до ее определения. Поменяйте строку 2 и 3, и она должна работать.