Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何识别传单';在“popupopen”活动中使用的标记?_Javascript_Jquery_Gis_Openstreetmap_Leaflet - Fatal编程技术网

Javascript 如何识别传单';在“popupopen”活动中使用的标记?

Javascript 如何识别传单';在“popupopen”活动中使用的标记?,javascript,jquery,gis,openstreetmap,leaflet,Javascript,Jquery,Gis,Openstreetmap,Leaflet,单击标记时,我需要执行一些代码,查找与所单击标记对应的id,从后端API检索数据,然后将新检索的数据添加到将打开的弹出窗口的内容中 唯一能够侦听标记上的单击事件的方法是 map.on('popupopen', function(e){ // How to retrieve marker? // eg: Assign an id on creation, retrieve it now during popupopen };) 我怎样才能知道这是哪个标记?是否可以向每个标记添加一

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

唯一能够侦听标记上的单击事件的方法是

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

我怎样才能知道这是哪个标记?是否可以向每个标记添加一个
id
属性,然后在
popupopen
事件期间检索该
id

事件对象包含一个“popup”属性,该属性具有一个名为“\u 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;
});

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


我猜这个库是非常不稳定的…我不知道为什么一开始就要传输这样复杂的信息

一个
L.Marker
放在地图上:
Marker.addTo(地图)
。我能够将
id
值传递给每个
标记
对象。这应该如何做,以及如何在以后的
popupopen
事件中检索此
id
?创建标记时,我会执行类似
var marker=new L.marker(new L.LatLng(lat,lng))
然后
marker.setContent(content).addTo(map)
。我在
e.popup上得到
undefined
。\u source
打开由
L.geoJson()调用生成的弹出窗口时。有什么线索吗?我当时的肮脏解决方案是在
onEachFeature
的弹出内容中包含一个
,然后在上面查找<代码>e.target.\u弹出窗口。\u contentNode.childNodes[0]。属性[0]
。是的,很脏,但很管用。phewExcellent Idea,因为在我的例子中,
e.popup.\u source
was
null
这个答案比公认的答案更值得商榷,因为
e.popup.\u source
确实可能会丢失,例如,如果以编程方式打开/关闭弹出窗口(而不是单击)。
map.on('popupopen', function(e) { alert(e.popup._source._popup._content); });