markerを動的に用意して、fitBounds()を呼んでやると、いい感じにmarkerが収まるように
自動で調整してくれる便利メソッドがあります。
Google Maps JavaScript API V3 Reference | Google Maps JavaScript API | Google Developers
しかし、makerの件数が1件だったり、marker同士が近すぎる場合、
拡大されすぎてしまうという問題があります。
解決方法
Google Maps v3 fitBounds() Zoom too close for single marker - Stack Overflow
緯度経度のrangeを取得しておいて、その差が一定範囲を超えない場合は
extend()で拡張を行うという荒技で対応してみました。
var margin = 0.004; if (markers.length === 1 || latRng < margin || lngRng < margin ) { var extendPoint1 = new google.maps.LatLng(bounds.getNorthEast().lat() + margin, bounds.getNorthEast().lng() + margin); var extendPoint2 = new google.maps.LatLng(bounds.getNorthEast().lat() - margin, bounds.getNorthEast().lng() - margin); bounds.extend(extendPoint1); bounds.extend(extendPoint2); } map.fitBounds(bounds);
なるほどね。