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