6

グーグルマップの左側に大きな(300 * 500px)カスタムコントロールがあります。マーカーを一緒にクラスタリングしています。ユーザーがマーカーをクリックしたときに、マップを拡大して、そのクラスター内のマーカーを表示したいと思います。

問題は:

マーカーコレクションの境界を取得するとmap.fitBounds(collection_bounds)、大きなコントロールの下にマーカーが表示されます。fitBoundsビューポート全体を使用しないようにする方法はありますか?

南西の境界点を取得し、LatLngそれをピクセルに変換し、その300ピクセルを移動してから、新しい南西の境界点として使用するためにに変換しみました。ズーム前にLatLng計算が行われるため、これは機能しません。300pxのシフトが多すぎてしまいます...自分で作成することを考えましたが、ズーム前に行われるという点で同じ問題が発生しました。fitBounds

4

2 に答える 2

4

あなたが言ったことはうまくいきます:

南西の境界点の LatLng を取得して、それをピクセルに変換し、その 300px を移動してから、それを LatLng に戻して、新しい南西の境界点として使用しようとしました。

2 つのステップで実行すると、ほとんど気付かないほど高速に実行されるため、ユーザーにはほとんど透過的です。したがって、最初map.fitBounds(bounds);に境界がマーカーによってのみ定義される法線を実行し、次に説明した手法で再調整します。そう:

  google.maps.event.addListenerOnce(map,'bounds_changed',function(){
    // re-adjust bounds here as you described. 
    // This event fires only once and then the handler removes itself.
  });
  map.fitBounds(bounds);
于 2012-08-28T04:37:23.823 に答える