I just had the problem that I added multiple markers to a v3 Google Map and executed fitBounds to see them all at ones. But the zoom level was much to high, when having only one marker. Calling the setZoom() method afterwards didn’t make any difference, so I searched a little bit and found this nice snippet of code:

google.maps.event.addListener(map, 'zoom_changed', function() {
        zoomChangeBoundsListener = google.maps.event.addListener(map, 'bounds_changed', function(event) {
            if (this.getZoom() > 10) // Change max/min zoom here
                this.setZoom(10);

            google.maps.event.removeListener(zoomChangeBoundsListener);
        });
});

via Boogle’s Blog (Google Groups respectively)