0

左側に div があり (ただし、厳密に言えば、マップのオーバーレイまたは UI 要素ではありません)、完全に配置されたフルスクリーンの Google マップがあるとします。

ここで、バウンディング ボックス ([ [lat, lng], [lat, lng] ] のように) があるとします。マップを適合させたいとします。その div を考慮したい場合はどうすればよいでしょうか。位置とピクセル単位のサイズ「このエリアは境界外です。バウンディングボックスが衝突しないように」とマップ上で指定できるものはありますか?

4

1 に答える 1

0

マップの周囲にバウンディングボックスを配置しようとしていますか、それともすべてのマーカーがマップ内に表示されるようにしようとしていますか?APIを使用すると、境界領域を設定して、マップが読み込まれたときにすべてのポイントがマップ内に表示されるようにすることができます。マップはそれに応じてズームまたは拡大縮小します。

関数内の境界を設定するには、以下を追加します

    (function(){
    ..existing code 

    var bounds = new google.maps.LatLngBounds();
    var infowindow;   
    //Here I have an event listener that I have setup for the clicking of the markers 

    (function (i, marker) {
         google.maps.event.addListener(marker, 'click', function () {

            if (!infowindow) {
               infowindow = new google.maps.InfoWindow();
            }

            infowindow.setContent('Location: ' + i);

            infowindow.open(map, marker);
            });
         })(i, marker);
          bounds.extend(places[i]);
       }
      map.fitBounds(bounds)

   })();

ここで起こっていることがいくつかあります。マップは私のDIVレイヤーの名前であり、無名関数はすべてをラップするために使用されます。クリックイベントコードを追加した理由は、マーカーをクリックして情報ウィンドウを表示するたびに(bounds.extend(places [i])を使用して、マップを自動位置に設定する方法も示すためです。Placesはの配列です。収集した座標。マーカー生成などのすべてのコードを追加しませんでしたが、通常はこのコードブロックをそれに続いて配置します。apiの一部としての境界機能により、マップは自動的に配置され、それに応じてズームされます。これにより、マップがレンダリングされたときにすべてのマーカーがユーザーに表示されます。これが目的かどうかはわかりませんが、明確にできれば、さらに詳しく説明できる可能性があります。

幸運を祈ります

于 2012-07-10T14:25:38.597 に答える