2

Google マップ マーカーのクリック イベント処理を行う方法がたくさんあることは知っています。私はそれらの方法を使用してきましたが、常にうまく機能します。

しかし、同じことをより良い方法で行うことができれば、私はこれについて考えています。なぜなら、新しいプロジェクトに 100,000 個のマーカーが存在する可能性があるからです (もちろん、それらが同時にマップに表示されることはありません) 、しかしマーカーのインスタンスは存在します)

google.maps.event.addListener(マーカー、「クリック」、クリックハンドラー); function clickhandler(event) { /* ここに */ }

clickhandler のスコープでは、latLng 情報しかありません。浮動小数点数である latLng でマーカーを検索するのは信頼できないと思います。問題は、クリックされたマーカーを見つける最善の方法は何ですか?

4

2 に答える 2

2

マーカーのマウス クリック イベントは、google.maps.MouseEvent オブジェクトをリスナー関数に渡します。したがって、次のようになります。

// give the maker an id
marker.myId = 25;
google.maps.event.addListener(marker, 'click', clickhandler);

function clickhandler(mev) {
    alert(mev.latLng); 
    alert(this.myId);// shows 25
}
于 2012-08-14T06:59:50.677 に答える
1

グループ要素から1つの要素(たとえば、同じクラスの要素)を参照しようとしているときはいつでも、を使用thisすると、イベントをトリガーした適切な要素を見つけるのに役立ちます。動作することを確認するためthisに、で確認しconsole.logます。

google.maps.event.addListener(marker, 'click', clickhandler); function clickhandler() { console.log(this); }

これにより、マーカーオブジェクトがログに記録されます。

于 2012-08-14T05:53:25.497 に答える