fitBounds of markers with Leaflet
Asked Answered
A

1

7

I have a array of markers named markersand i add those markers in map using LeafletJs

L.layerGroup(markers).addTo(map);

Now i want to focus on a viewport that covers all markers

var bounds = L.latLngBounds(markers);
 map.fitBounds(bounds, { padding: [20, 20] });

Why i get Cannot read property 'lat' of undefined error message in map.fitBounds(bounds, { padding: [20, 20] }); line.

Ayana answered 12/12, 2014 at 19:55 Comment(0)
L
10

The reason you're getting an error is because L.LatLngBounds expects two L.LatLng objects as parameter, not an array of markers, as you can see in the documentation. I would suggest using L.FeatureGroup, it's extended from L.LayerGroup but has some extras. It has a getBounds method, which will do exactly what you need, calculate the bounds according to all of the features added to the group. So you could do:

var featureGroup = L.featureGroup(markers).addTo(map);
map.fitBounds(featureGroup.getBounds());

Here's a working example on Plunker: http://plnkr.co/edit/EbzlaF05fLARDYbnXSSk

Lyso answered 12/12, 2014 at 20:34 Comment(3)
I changed as you said but still has same problem.Ayana
Then you must be doing something else wrong, but can't see what based on the code you've given. Here's a working plunker, also added to my answer: http://plnkr.co/edit/EbzlaF05fLARDYbnXSSkLyso
Working example required "<link data-require="[email protected]""Amoral

© 2022 - 2024 — McMap. All rights reserved.