如何在’popupopen`事件中识别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
属性,然后在popupopen
事件期间检索此id
?
事件对象包含一个“popup”属性,该属性具有一个名为“_source”的私有属性,该属性是弹出窗口绑定的对象(即标记)。 由于_source应该是私有的,这似乎不是正确的方式,但我不确定如何做到这一点。
map.on('popupopen', function(e) { var marker = e.popup._source; });
Javascript对象可以在其上定义任何属性。 创建弹出窗口时,将popup.marker设置为引用的标记。 然后,您可以稍后在事件处理程序中访问它。
要获取标记ID,您可以使用以下代码:
map.on('popupopen', function(e) { var marker = e.popup._source.feature.properties.markerid; });
其他答案不起作用,但这样做:
map.on('popupopen', function(e) { alert(e.popup._source._popup._content); });
猜猜这个库很不稳定……我不确定为什么首先传输这样的信息会很复杂。 <耸肩>