如何在'popupopen`事件中识别Leaflet的标记?

时间:2012-10-03 02:46:18

标签: javascript jquery gis openstreetmap leaflet

单击标记时,我需要执行一些代码,找到与被点击的标记对应的id,从后端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

4 个答案:

答案 0 :(得分:26)

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

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

答案 1 :(得分:12)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

其他答案无效,但是可以:

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

猜猜这个库是非常不稳定的...而且我不确定为什么首先要传输这样的信息这么复杂。 <耸肩>