Подтвердить что ты не робот

Маркер в брошюре, событие click

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); 

кто-нибудь знает, почему в маркере нет работает?

4b9b3361

Ответ 1

Я нашел решение:

function onClick(e) {alert(this.getLatLng());}

использовал метод getLatLng() маркера

Ответ 2

Вышеуказанный ответ правилен и справедливо принят. Однако, похоже на @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

Ответ 3

Дополнительная информация: Общей потребностью является передача идентификатора объекта, представленного маркером, на некоторый вызов ajax с целью получения дополнительной информации с сервера.

Кажется, что когда мы делаем:

marker.on('click', function(e) {...

e указывает на MouseEvent, который не позволяет нам попасть в объект-маркер. Но есть встроенный объект this, который, как ни странно, требует от нас использовать this.options для доступа к объекту options, который позволяет нам передавать все, что нам нужно. В приведенном выше случае мы можем передать некоторый идентификатор в опции, скажем objid, а затем в указанной выше функции мы можем получить значение, вызвав: this.options.objid

Ответ 4

Здесь 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);
}

Ответ 5

Немного поздно для вечеринки, нашел это, ища пример события щелчка маркера. Ошибка undefined, которую получил исходный плакат, потому что функция onClick указана до ее определения. Поменяйте строку 2 и 3, и она должна работать.