Leaflet.jsマーカーにバインドポップアップが開いているかどうか
-
26-12-2019 - |
質問
対象に従って、マーカーがポップアップを開いているかどうかを確認するにはどうすればよいですか?
例えば
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では、2番目のクリックで発射する場合は、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
メソッドを持っています:
所属していません StackOverflow