`popuppen`イベント中にリーフレットのマーカーを識別する方法?
-
12-12-2019 - |
質問
マーカーをクリックすると、クリックされているマーカーに対応するid
が検索されたコードを実行し、バックエンドAPIからデータを取得してから、開くポップアップのcontent
に新しく取得したデータを追加します。
マーカー上のクリックイベントを聴くことができる唯一の方法は
map.on('popupopen', function(e){
// How to retrieve marker?
// eg: Assign an id on creation, retrieve it now during popupopen
};)
.
これがどのマーカーであるかを見つけることができますか?id
属性を各マーカーに追加することは可能です。
解決
Eventオブジェクトには、ポップアップがバインドされているオブジェクト(すなわちマーカー)である「_Source」というプライベート属性を持つ "popup"属性が含まれています。_Sourceは非公開であると思われるので、これは正しい方法のようには思われませんが、他に何をするのかわからない。
map.on('popupopen', function(e) {
var marker = e.popup._source;
});
. 他のヒント
JavaScriptオブジェクトには、それらに定義されているプロパティを定義できます。ポップアップを作成するときに、Popup.Markerを参照されたマーカーに設定します。その後、イベントハンドラの後半にアクセスできます。
マーカーIDを取得するには、このコードを使用できます。
map.on('popupopen', function(e) {
var marker = e.popup._source.feature.properties.markerid;
});
. 他の答えはうまくいきませんでしたが、これは次のようになります。
map.on('popupopen', function(e) { alert(e.popup._source._popup._content); });
.
この図書館はかなり揮発性であると思います...そしてそれがそもそもそのような情報を送信するのが複雑である理由はわかりません。
所属していません StackOverflow