문제

피사체에 따라 마커가 팝업이 열려 있는지 확인할 수 있습니까?

예.

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
    }
}
.

하지만 매우 flaky입니다.Chrome에서는 Android 브라우저에서 두 번째 클릭으로 발사되므로 실제로 신뢰할 수없는 것이 아닙니다.

이 작업을 수행하는 표준 방법이 있습니까?

감사합니다

도움이 되었습니까?

해결책

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#팝업 - isopen

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top