ユーザーデータから動的に生成されるオーバーレイがあるので、そのオーバーレイの中心を見つける方法を知る必要があります。
現在、私はオーバーレイからの最初の座標を使用していますが、それは実際にはオーバーレイの中心を表していません。したがって、マップをロードすると、オーバーレイの中央に配置されません。
ハードコーディングせずに中心を計算することにより、オーバーレイ上の地図を中心に配置するための良い方法はありますか?
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
};
座標のリストがある場合、それらをループして、それらを 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);
_
@ 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);