Google Maps API v3:イベントリスナーを削除する方法


91

Google Maps API v3で「bounds_changed」イベントリスナーを削除するにはどうすればよいですか?

google.maps.event.removeListener(_???_);    

1
私はあなたが探していたものを見つけたと思います。APIドキュメントの3番目のイベント関数でした。
森まいく

1
あなたの痛みが分かります。このドキュメントはcode.google.com/apis/maps/documentation/javascript/events.htmlにあると思いますが、そうではありません。Grrrr
Drew LeSueur

回答:


152

通常、このような質問に対する回答は、Google Maps APIのドキュメントで見つけることができます。

Andrewが言ったように、addListenerはハンドルを返すので、後でこれを使用してリスナーを削除できます。これは、1つのイベントに多くのリスナーが含まれる可能性があるためで、それらを削除するには、接続されている各リスナーへの参照を保存する必要があります。

すべてのリスナーを同時に削除する関数もあります:

clearListeners(instance:Object, eventName:string);
//In your case:
google.maps.event.clearListeners(map, 'bounds_changed');

これについて、Google Maps APIリファレンスをご覧ください。


2
これで、bounds_changedイベントのみが削除されますか?
mp_ 2009年

この方法とAndrews方法を使用することの賛否両論は何ですか?
mp_ 2009年

これにより、すべてのリスナーがbounds_changedイベントから削除されます。アンドリューの方法はそれを削除しますが。ハンドルをどこかに保存する必要がなく、特定のイベントのリスナーが1つだけであることを心配する必要がある場合は、これが適しています。
森まいく

前述のように、イベントには多くのリスナーが含まれる可能性がありますが、コードで1を使用しているようです。その概念を理解すると、両方の機能の異なる使用法がわかります。また、私が提供したリンクも参照してください。これらの機能の両方について、わかりやすい説明があります。
森まいく

2
理解した。google.maps.event.clearListeners(map, 'idle')動作します。しかし、map.clearListeners('idle')そうではありません。その構文は、APIの他のすべて(.addListenerなど)で機能します。奇数。
アンディマーサー

93

addListenerは、後でremoveListenerに渡すことができるハンドルを返します。

var listenerHandle = google.maps.event.addListener(map, 'bounds_changed', function() {

google.maps.event.removeListener(listenerHandle);

では、リスナーの静的変数はなくなりましたか?
mp_ 2009年

リスナーは1つずつ削除する必要があります。それらすべてをjQueryとしてアンバインドすることはできません。私も同じことを考えていて、この点でも混乱したのでわかっています。私は最終的にそれを解決し、上の擬似コードは私がそれをどのようにしたかを大まかに示しています。
Andrew

1
ドラット!あなたは、ある良い答え。
Andrew

4
より良い答えは、私たちが作成したイベントリスナーのみを削除することであり、他のスクリプトには影響しません
Matthieu Napoli

2
2つの理由からより良い答え。のみ、実際のリスナーを削除します。また、あなたはAPIドキュメントはコメントでそれを見つけることができます」不機嫌を持っていません。
keithhackbarth

16

これは現在のリリースで動作するようです。

var listenerHandle = google.maps.event.addListener(map, 'bounds_changed', function() {
    // Handler code.
});
listenerHandle.remove();

そして、このアプローチの良いところは、listenerHandler.remove()データレイヤーリスナーでも機能するgoogle.maps.data.addListenerことですgoogle.maps.data.removeListener。つまり、メソッドが定義されていないためです。
クリストファーキング


0

何らかの方法でリスナーオブジェクトを保持できない場合は、次のように直接リスナーを削除できます。 google.maps.event.clearListeners(objectListened, 'event');

例: google.maps.event.clearListeners(map, 'bounds_changed');

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.