22

单击标记时,我需要执行一些代码来找到id与被单击的标记相对应的代码,从后端 API 检索数据,然后将新检索到的数据添加到content将打开的弹出窗口中。

能够在标记上监听点击事件的唯一方法是

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

我怎样才能找出这是哪个标记?是否可以为每个标记添加一个id属性,然后idpopupopen事件期间检索它?

4

4 回答 4

35

事件对象包含一个“弹出”属性,该属性具有一个名为“_source”的私有属性,该属性是弹出窗口绑定到的对象(即标记)。由于 _source 应该是私有的,这似乎不是正确的方法,但我不知道该怎么做。

map.on('popupopen', function(e) {
  var marker = e.popup._source;
});
于 2012-10-03T16:41:14.300 回答
17

Javascript 对象可以在其上定义任何属性。创建弹出窗口时,将 popup.marker 设置为引用的标记。然后您可以稍后在事件处理程序中访问它。

于 2012-11-13T17:17:33.393 回答
1

要获取标记 ID,您可以使用以下代码:

map.on('popupopen', function(e) {
  var marker = e.popup._source.feature.properties.markerid;
});
于 2015-08-08T09:23:12.430 回答
1

其他答案不起作用,但这确实:

map.on('popupopen', function(e) { alert(e.popup._source._popup._content); });

猜猜这个库非常不稳定......我不确定为什么首先传输此类信息会如此复杂。<耸肩>

于 2018-07-09T22:55:45.817 回答