マーカーがクリックされたら、クリックされているマーカーに対応するid
を見つけ、バックエンドAPIからデータを取得し、新しく取得したデータをのcontent
に追加するコードを実行する必要があります。開くポップアップ。
マーカーのクリックイベントを聞くことができる唯一の方法は
map.on('popupopen', function(e){
// How to retrieve marker?
// eg: Assign an id on creation, retrieve it now during popupopen
};)
これがどのマーカーであるかをどのように見つけることができますか?各マーカーにid
属性を追加し、id
イベント中にこのpopupopen
を取得することは可能ですか?
イベントオブジェクトには、ポップアップがバインドされるオブジェクト(つまりマーカー)である「_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); });
このライブラリはかなり不安定だと思います...そして、そもそもそのような情報を送信するのがなぜこれほど複雑なのかわかりません。 <肩をすくめる>