2016-03-21 4 views
-1

bounds_changedイベントでマーカーデータを更新するGoogleマップがあります。マーカーをクリックすると情報ウィンドウが開きます。マーカーがマップの隅にある場合は、マップを少し動かして、ポップアップをマップビューに合わせます。マーカーをクリックして情報ウィンドウを表示すると、bounds_changedイベントが発生します。どうすれば無効にすることができますか?

この時点で、私のbounds_changedイベントが再び発生し、すべてのマーカーを新しいデータで再度バインドします。したがって、これは非常に滑らかなUXではありません。どうすればこの問題を解決できますか?

ありがとうございます。

答えて

0

理論的解決策:bounds_changedイベントが発生した場合、いいえを実行する必要があります。

実用的なソリューション:

1)あなたはaddlistenerbounds_changedのイベントに持っているし、イベントを無視します。

var ignore = false; // this var is global; 
currentBoundsListener = google.maps.event.addListener(map, 'bounds_changed', function() { 
if(ignore) { 
    ignore = false; 
    return; 
} 

// Whatever. 
}); 

2)ignore変数は、デフォルトでfalseに設定されており、infowindowが表示されている場合、ユーザは、マーカーをクリックしたときtrueに設定する必要があります:あなたはそれを行う方法です。

google.maps.event.addListener(marker, 'click', (function(marker, i) { 
       ignore = true; 
       })(marker, i)); //end add marker listener 

1)How ignore bounds_changed event 2)How add listener to marker click event

+0

しかし、私はのbounds_changedイベントに関するデータを更新する必要があります。 –

+0

なぜbounds_changedにする必要がありますか?あなたの質問 – alsafoo

+0

に関連するすべてのコードをコピーします。データが大きすぎて地図を移動したり、ズームアウトしたり、ズームインしたり、場所を変更したりして、リストを更新する必要があるためです。 –

関連する問題