কয়েকটি কার্যকর কৌশল দ্বারা প্রদত্ত উত্তরটি প্রসারিত করতে:
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)
}
আপডেট:
বিষয়টিতে আরও গবেষণা দেখায় যে ফিটবাউন্ডস () একটি অ্যাসিনক্রোনিক এবং ফিট সীমাগুলিকে কল করার আগে শ্রোতাদের সাথে জুম হেরফের করা ভাল।
ধন্যবাদ @ টিম, @ xr280xr, বিষয়টির আরও উদাহরণ: এসও: সেটজুম-পরে-ফিটবাউন্ডস
google.maps.event.addListenerOnce(map, 'bounds_changed', function(event) {
this.setZoom(map.getZoom()-1);
if (this.getZoom() > 15) {
this.setZoom(15);
}
});
map.fitBounds(bounds);