マップの境界が変更されたときに新しいマーカーを取得する Google マップ v3 JavaScript アプリケーションを作成しています。そのために、「bounds_changed」リスナーを使用しています。問題は、私が行う呼び出しを制限したいのですが、ユーザーがマップ ビューポートを変更するたびにそれらを起動したくないということです。マップが変更されていて、たとえば 1 秒間アイドル状態だった場合にのみ、この呼び出しを実行するにはどうすればよいですか?
ありがとうございました!ポール
マップの境界が変更されたときに新しいマーカーを取得する Google マップ v3 JavaScript アプリケーションを作成しています。そのために、「bounds_changed」リスナーを使用しています。問題は、私が行う呼び出しを制限したいのですが、ユーザーがマップ ビューポートを変更するたびにそれらを起動したくないということです。マップが変更されていて、たとえば 1 秒間アイドル状態だった場合にのみ、この呼び出しを実行するにはどうすればよいですか?
ありがとうございました!ポール
タイムアウトのグローバル変数を宣言します
var changetm = null;
その後、あなたが呼び出すイベントで
function event_handle(e){
clearTimeout(changetm);
changetm = setTimeout("fetch_new_markers()", 1000);
}
それは、前の呼び出しをクリアし (存在する場合)、次の呼び出しをキューに追加し、1000 ミリ秒 (1 秒) 待って呼び出します。1秒以内に何らかのイベントが発生すると、待機キューが再びクリアされます...
タダー
必要なものを取得する最も簡単な方法は、おそらくsetTimeout() と clearTimeout()を使用して、マップが目的の時間アイドル状態になるまで「更新」呼び出しがトリガーされないようにすることです。
bounds_changed
次のようなことを行うようにリスナーを実装できます。
function loadMarkersForCurrentMapBounds() {
//code to load markers from your server goes here
}
function boundsChanged() {
//...
if (window.scheduledUpdate) {
clearTimeout(window.scheduledUpdate);
}
window.scheduledUpdate = setTimeout(loadMarkersForCurrentMapBounds, 1000);
//...
}