22

idマーカーがクリックされると、クリックされているマーカーに対応するものを見つけ、バックエンドAPIからデータを取得し、新しく取得されたデータをcontentポップアップのに追加するコードを実行する必要があります。

マーカーのクリックイベントを聞くことができる唯一の方法は

map.on('popupopen', function(e){
    // How to retrieve marker?
    // eg: Assign an id on creation, retrieve it now during popupopen
};)

これがどのマーカーであるかをどのように知ることができますか?各マーカーに属性を追加し、イベント中にidこれを取得することは可能ですか?idpopupopen

4

4 に答える 4

35

イベントオブジェクトには、ポップアップがバインドされるオブジェクト(つまりマーカー)である「_source」と呼ばれるプライベート属性を持つ「popup」属性が含まれています。_sourceはプライベートであると想定されているため、これは正しい方法ではないようですが、他にどのように行うかはわかりません。

map.on('popupopen', function(e) {
  var marker = e.popup._source;
});
于 2012-10-03T16:41:14.300 に答える
17

Javascriptオブジェクトには、任意のプロパティを定義できます。ポップアップを作成するときに、popup.markerを参照マーカーに設定します。その後、イベントハンドラーでアクセスできます。

于 2012-11-13T17:17:33.393 に答える
1

マーカーIDを取得するには、次のコードを使用できます。

map.on('popupopen', function(e) {
  var marker = e.popup._source.feature.properties.markerid;
});
于 2015-08-08T09:23:12.430 に答える
1

他の答えは機能しませんでしたが、これは機能します:

map.on('popupopen', function(e) { alert(e.popup._source._popup._content); });

このライブラリはかなり不安定だと思います...そして、そもそもそのような情報を送信するのがなぜこれほど複雑なのかわかりません。<肩をすくめる>

于 2018-07-09T22:55:45.817 に答える