2

「onBeforeZoomChange」および「onAfterZoomChange(="zoom_changed") のようなイベントを検出してフックすることは可能ですか?

マップ上にレイヤー化され、適切なマーカーにバインドされた何百もの DIV (ラベル) には問題があります。マップがアニメーション化 (ズームアウト) すると、DIV のサイズが 2 回変更された後、アニメーション化されて小さくなります。これは、パフォーマンスに大きな問題があり、動作が非常に悪いようです。ズームが開始する前にこれらの DIV を非表示にして、 zoom_changed に表示することは可能ですか?

4

1 に答える 1

0

マップを再描画するメソッドをインターセプトする方法はありませんが、オーバーレイを描画する関数を独自に定義するため、カスタム オーバーレイの描画をインターセプトする方法があります。

cutom Overlay の draw-method は、必要なときにいつでも自動的に呼び出されます。

簡単なアプローチ: マップがアイドル状態になるまでオーバーレイを再描画しないでください:

  YourOverlayClass.prototype.draw = function(idle) {

    if(!idle){
        var _this=this;
        google.maps.event.addListenerOnce(this.map,'idle',
                       function(){_this.draw(true);});

        /*optionally you may hide the overlay here*/

        return;
    }
    /**
      * your drawing-instructions here
      **/

    /*show the overlay here when it has been hidden before*/
  }

draw の自動呼び出しは引数なしで行われ、提案は引数が提供されたかどうかをチェックします。

yes の場合: オーバーレイを再描画します。

no の場合: マップのアイドル イベントにリスナーを追加します。ここで、描画メソッドが引数 (オーバーレイを再描画するもの) で呼び出されます。

于 2013-01-14T22:20:40.773 に答える