leaflet.js - 如何识别弹出窗口?

时间:2014-10-25 17:17:21

标签: javascript onclick popup leaflet identifier

我想创建一个标记以及一个弹出窗口,其中包含一个按钮,当单击该按钮时,将触发JQuery-Ajax-Function以编辑弹出窗口的内容。

使用按钮的onclick() - 属性,我似乎无法找到将弹出框架坐标传递给Ajax函数的方法。我想传递坐标,因为据我所知,这是清楚识别每个弹出/标记的唯一方法。

到目前为止,这是我的代码:

function onMapClick(eventData) {
    var popup = L.popup()
        .setLatLng(eventData.latlng)
        .setContent("<input type=\"button\" onclick=\"editMarker(" + eventData.latlng + ")\" value=\"Click to edit!\">")

    L.marker(eventData.latlng, { draggable : true })
        .bindPopup(popup)
        .on("click", openMarker)
        .on("contextmenu", deleteMarker)
        .on("dblclick", editMarker)
        .addTo(map);
}

function editMarker(eventData) {
    alert("Editing marker at " + eventData);
}

然而,这样onclick()的参数是&#34; LatLng(xx,-yy)&#34;这当然会导致未定义的函数调用。我发现没有办法获得弹出窗口的纯坐标,以便将它们传递给编辑函数。

a)清楚地识别弹出窗口和b)将该ID传递给另一个函数的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

所有传单对象都与_leaflet_id相关联,因此您应该可以将其用作您的ID。

您还可以绑定弹出窗口时触发的open事件。该事件传递对正在打开的弹出窗口的引用。您可以绑定并使用如下:

popup.on("open", popupOpen); 

// some other code as needed    

function popupOpen(pop) {
    this.currentPop = pop;
    console.log(pop.target._leaflet_id);
}