web-dev-qa-db-ja.com

Google Maps API:ポリラインの中心/ズームを計算する

ユーザーデータから動的に生成されるオーバーレイがあるので、そのオーバーレイの中心を見つける方法を知る必要があります。

現在、私はオーバーレイからの最初の座標を使用していますが、それは実際にはオーバーレイの中心を表していません。したがって、マップをロードすると、オーバーレイの中央に配置されません。

ハードコーディングせずに中心を計算することにより、オーバーレイ上の地図を中心に配置するための良い方法はありますか?

var latlng = new google.maps.LatLng(38.269239, -122.276010);
    var myOptions = {
        zoom: 15,//Calculate this somehow?
        center: latlng,// Calculate value from array of coordinates?
        mapTypeId: google.maps.MapTypeId.HYBRID
    };
26
Nic Hubbard

座標のリストがある場合、それらをループして、それらを LatLngBounds オブジェクトに追加できます。以下はV3 APIの例ですが、V2の概念も同様です。

_var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < coordinates.length; i++) {
  bounds.extend(coordinates[i]);
}
_

その後、次のようにしてセンターを取得できます:

_bounds.getCenter();
_

または、map.fitBounds()を直接呼び出すこともできます。これにより、境界の中心を中心にマップが中央に配置され、ズームが調整され、境界全体がビューポートに正確にフィットします。

_map.fitBounds(bounds);
_
84
tux21b

@ Tux21bに基づいて、

      var bounds = new google.maps.LatLngBounds();
      polyline.getPath().forEach(function(e){//can't do polyline.getPath()[i] because it's a MVCArray
          bounds.extend(e);
      })         
      _map.fitBounds(bounds);
11
Anderson