दिए गए उत्तर को कुछ उपयोगी ट्रिक्स के साथ विस्तारित करने के लिए:
var markers = //some array;
var bounds = new google.maps.LatLngBounds();
for(i=0;i<markers.length;i++) {
bounds.extend(markers[i].getPosition());
}
//center the map to a specific spot (city)
map.setCenter(center);
//center the map to the geometric center of all markers
map.setCenter(bounds.getCenter());
map.fitBounds(bounds);
//remove one zoom level to ensure no marker is on the edge.
map.setZoom(map.getZoom()-1);
// set a minimum zoom
// if you got only 1 marker or all markers are on the same address map will be zoomed too much.
if(map.getZoom()> 15){
map.setZoom(15);
}
//Alternatively this code can be used to set the zoom for just 1 marker and to skip redrawing.
//Note that this will not cover the case if you have 2 markers on the same address.
if(count(markers) == 1){
map.setMaxZoom(15);
map.fitBounds(bounds);
map.setMaxZoom(Null)
}
अद्यतन:
विषय में आगे के शोध बताते हैं कि फिटबाउंड्स () एक एसिंक्रोनस है और फिट बाउंड्स को कॉल करने से पहले परिभाषित श्रोता के साथ ज़ूम हेरफेर करना सबसे अच्छा है।
धन्यवाद @Tim, @ xr280xr, इस विषय पर और उदाहरण: SO: setzoom-after-fitbounds
google.maps.event.addListenerOnce(map, 'bounds_changed', function(event) {
this.setZoom(map.getZoom()-1);
if (this.getZoom() > 15) {
this.setZoom(15);
}
});
map.fitBounds(bounds);