zoom_change
が原因でイベントが発生した場合、イベントがトリガーされないようにする方法はありfitBounds()
ますか?
fitBounds()
マップへのズームの変更があるときにクライアントからサーバーで検索を実行する必要があるという問題がありますが、それを呼び出すたびzoom_change
にトリガーが発生し、クライアントがサーバーで別の検索を実行します。私はユーザーが行う zoom_change にのみ興味があり、プログラムでfitBounds
.
zoom_change
が原因でイベントが発生した場合、イベントがトリガーされないようにする方法はありfitBounds()
ますか?
fitBounds()
マップへのズームの変更があるときにクライアントからサーバーで検索を実行する必要があるという問題がありますが、それを呼び出すたびzoom_change
にトリガーが発生し、クライアントがサーバーで別の検索を実行します。私はユーザーが行う zoom_change にのみ興味があり、プログラムでfitBounds
.
プログラムで fitBounds を実行するときは、グローバル フラグを設定します。zoom_changed イベントが発生したときに、フラグが設定されている場合はクリアし、そうでない場合はリクエストをサーバーに送信します。
何時間もイライラした後、これが私の解決策です:
var tiles_listener = google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
var zoom_listener = google.maps.event.addListener(map, 'zoom_changed', function() {
reloadMarkers();
});
});
最初のリスナーが完了した後、リスナーが 1 回だけ追加されるようにするためaddListenerOnce
に呼び出していることに注意してください。tilesloaded
zoome_changed
fitBounds
これは古い質問ですが、他の人にとっては役立つかもしれません。マップに複数のマーカーを追加するときに ()zoom_changed
を呼び出すたびに、同じ問題が発生しました。fitBounds
私がしたことはmap_changed
、次のように、マップが完全にロードされた後にリスナーをイベントに追加することでした:
google.maps.event.addListener(map, 'tilesloaded', function() {
google.maps.event.addListener(map, 'zoom_changed', function() {
これはシンプルにすべきだと思います。変数に発言させる
var z = map.getZoom(); //scope this variable appropriately(somewhere before you call the fitbounds()
そして、 map.fitbounds() の直後に実行します
map.setZoom(z); //this automatically changes the zoom level back to the previous level