28

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

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

誰かが、ハードコーディングするのではなく、中心を計算することによって、オーバーレイの中心にマップを配置するための良い方法を持っていますか?

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
    };
4

2 に答える 2

91

座標のリストがある場合は、それらをループしてLatLngBoundsオブジェクトに追加できます。これはV3APIの例ですが、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);
于 2010-07-23T18:07:34.040 に答える
15

@ 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);
于 2013-08-21T08:21:35.503 に答える