2

マップの境界が変更されたときに新しいマーカーを取得する Google マップ v3 JavaScript アプリケーションを作成しています。そのために、「bounds_changed」リスナーを使用しています。問題は、私が行う呼び出しを制限したいのですが、ユーザーがマップ ビューポートを変更するたびにそれらを起動したくないということです。マップが変更されていて、たとえば 1 秒間アイドル状態だった場合にのみ、この呼び出しを実行するにはどうすればよいですか?

ありがとうございました!ポール

4

2 に答える 2

4

タイムアウトのグローバル変数を宣言します

var changetm = null;

その後、あなたが呼び出すイベントで

function event_handle(e){

    clearTimeout(changetm);
    changetm = setTimeout("fetch_new_markers()", 1000);

}

それは、前の呼び出しをクリアし (存在する場合)、次の呼び出しをキューに追加し、1000 ミリ秒 (1 秒) 待って呼び出します。1秒以内に何らかのイベントが発生すると、待機キューが再びクリアされます...

タダー

于 2012-05-28T01:25:20.647 に答える
0

必要なものを取得する最も簡単な方法は、おそらく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);

    //...
}
于 2012-05-28T01:26:27.250 に答える