How do I get all the markers on the map so the users can see all of them?
I have got some amount of markers. I am displaying them on the map. The center LonLat I get from taking the average of the highest and the lowest numbers of the lon and lat of all my markers.
So I set my map to the center point of all my markers using:
map.setCenter(centerLonLat, 8);
8 is just a random zooming level. Is there any way to calculate the perfect zooming level so all the markers are displayed in the map?
A similar way to do it, avoiding a loop, is given by OpenLayers getDataExtent() function here. You need to apply it on the layer containing your markers :
var newBound = map.myLayer.getDataExtent();
map.zoomToExtent(newBound);
This is an old thread, but with changes to OpenLayers I thought I'd post a new solution to this. If you are using a ol.source.Vector as your layer source then you can call the following line to fit the map view around your data.
map.getView().fit(vectorSource.getExtent());
This simultaneously centers the map and sets the zoom so that all of your data is visible at once.
Got it working using zoomToExtent()
var newBound = OpenLayers.Bounds();
For each marker lonlat:
newBound.extend(lonLat);
Then pass it to the function:
map.zoomToExtent(newBound);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With