質問

対象に従って、マーカーがポップアップを開いているかどうかを確認するにはどうすればよいですか?

例えば

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メソッドを持っています:

> http://leafletjs.com/reference-1.0.0.html#ポップアップ - ISOPEN

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top