Как идентифицировать маркер листовок во время мероприятия "popupopen"? - программирование
Подтвердить что ты не робот

Как идентифицировать маркер листовок во время мероприятия "popupopen"?

при щелчке маркера мне нужно выполнить код, который находит id, соответствующий щелчку маркера, извлекает данные из backend API, а затем добавляет вновь полученные данные в content всплывающего окна, которое будет открыто.

Единственный способ, который может прослушивать событие клика на маркере, -

map.on('popupopen', function(e){
    // How to retrieve marker?
    // eg: Assign an id on creation, retrieve it now during popupopen
};)

Как я могу узнать, какой маркер это? Можно ли добавить атрибут id для каждого маркера, а затем извлечь этот id во время события popupopen?

4b9b3361

Ответ 1

Объект события содержит атрибут "всплывающее", который имеет частный атрибут, называемый "_source", который является объектом, к которому всплывающее окно привязано (т.е. маркером). Поскольку _source предполагается закрытым, это не похоже на правильный путь, но я не уверен, как это сделать.

map.on('popupopen', function(e) {
  var marker = e.popup._source;
});

Ответ 2

Объекты Javascript могут иметь любые свойства, определенные на них. Установите popup.marker на указанный маркер при создании всплывающего окна. Затем вы можете получить к нему доступ позже в обработчике событий.

Ответ 3

Чтобы получить идентификатор маркера, вы можете использовать этот код:

map.on('popupopen', function(e) {
  var marker = e.popup._source.feature.properties.markerid;
});