@Andyのソリューションと私のソリューションが混在している問題を修正する方法をついに見つけました。resize
イベントは実際にトリガーされる必要がありますが、以下に示すように、ズーム レベルとマップの中心が正しく表示されません。
ズーム レベルと中心を更新するには、マップ マーカーに応じてマップの境界を更新するこの自家製の方法を使用します。
var updateBounds = function ( map, markers ) {
var bounds = new google.maps.LatLngBounds();
for ( var i = 0, len = markers.length ; i < len ; i++ ) {
bounds.extend ( markers[i].marker.position );
}
// extend bounds using two invisible markers so the markers don't get too close to the map borders
var
extendPoint1 = new google.maps.LatLng ( bounds.getNorthEast().lat() + 0.001, bounds.getNorthEast().lng() + 0.001 ),
extendPoint2 = new google.maps.LatLng ( bounds.getNorthEast().lat() - 0.001, bounds.getNorthEast().lng() - 0.001 );
bounds.extend ( extendPoint1 );
bounds.extend ( extendPoint2 );
map.fitBounds ( bounds );
};