leaflet.js检查标记是否打开了绑定的弹出窗口

时间:2014-01-11 14:52:24

标签: javascript android leaflet

根据主题,如何检查标记是否打开弹出窗口?

例如

var m = new L.marker([2,1]).addTo(map).bindPopup('test');

点击标记显然会打开弹出窗口。

是否有任何功能,例如:

if(m.popupOpen() == true) {
    // do somehting
}

我尝试了以下内容:

m.on('click', function(e) {
    if(m._map.hasLayer(m._popup)) {
        // Do something
    }
}

但它非常脆弱。在Chrome上,它将在Android浏览器上运行,如果在第二次点击时触发,那么它就不是真的可靠了。

有没有标准的方法呢?

由于

1 个答案:

答案 0 :(得分:10)

你可以对L.Marker中包含的_popup对象的_isOpen属性进行快速而脏的检查:

var map = L.map('map').setView(L.latLng(0, 0), 0);
var marker = L.marker(L.latLng(0, 0)).addTo(map);
marker.bindPopup("Popup!");
var popup = marker.getPopup(); // returns marker._popup

console.log(popup._isOpen); // false

marker.openPopup();

console.log(popup._isOpen); // true

marker.closePopup();

console.log(popup._isOpen); // false

编辑:v1.0.0 L.Popup有一个isOpen方法:

http://leafletjs.com/reference-1.0.0.html#popup-isopen