12

zoom_changeが原因でイベントが発生した場合、イベントがトリガーされないようにする方法はありfitBounds()ますか?

fitBounds()マップへのズームの変更があるときにクライアントからサーバーで検索を実行する必要があるという問題がありますが、それを呼び出すたびzoom_changeにトリガーが発生し、クライアントがサーバーで別の検索を実行します。私はユーザーが行う zoom_change にのみ興味があり、プログラムでfitBounds.

4

6 に答える 6

10

プログラムで fitBounds を実行するときは、グローバル フラグを設定します。zoom_changed イベントが発生したときに、フラグが設定されている場合はクリアし、そうでない場合はリクエストをサーバーに送信します。

于 2012-10-25T22:57:17.223 に答える
5

何時間もイライラした後、これが私の解決策です:

  var tiles_listener = google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
    var zoom_listener = google.maps.event.addListener(map, 'zoom_changed', function() {
      reloadMarkers();
    });
  });

最初のリスナーが完了した後、リスナーが 1 回だけ追加されるようにするためaddListenerOnceに呼び出していることに注意してください。tilesloadedzoome_changedfitBounds

于 2015-12-01T04:30:21.557 に答える
4

これは古い質問ですが、他の人にとっては役立つかもしれません。マップに複数のマーカーを追加するときに ()zoom_changedを呼び出すたびに、同じ問題が発生しました。fitBounds私がしたことはmap_changed、次のように、マップが完全にロードされた後にリスナーをイベントに追加することでした:

google.maps.event.addListener(map, 'tilesloaded', function() {
    google.maps.event.addListener(map, 'zoom_changed', function() {
于 2013-04-26T14:06:54.423 に答える
-3

これはシンプルにすべきだと思います。変数に発言させる

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
于 2012-10-26T03:55:18.833 に答える