Как идентифицировать маркер листовок во время мероприятия "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?

Ответы

Ответ 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;
});