2014-12-12 3 views
1

У меня есть массив маркеров по имени markers и я добавить эти маркеры на карте с помощью LeafletJsfitBounds маркеров с листовка

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

Теперь я хочу сосредоточиться на видовом экране, который охватывает все маркеры

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

Почему я получаю Cannot read property 'lat' of undefined сообщение об ошибке в map.fitBounds(bounds, { padding: [20, 20] }); линия.

ответ

2

Причина, по которой вы получаете сообщение об ошибке, заключается в том, что L.LatLngBounds ожидает, что два объекта L.LatLng в качестве параметра, а не массив маркеров, как вы можете видеть в documentation. Я бы предложил использовать L.FeatureGroup, он расширен от L.LayerGroup, но имеет некоторые дополнительные функции. Он имеет метод getBounds, который будет выполнять именно то, что вам нужно, вычислить границы в соответствии со всеми функциями, добавленными в группу. Таким образом, вы можете сделать:

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

Вот рабочий пример на Plunker: http://plnkr.co/edit/EbzlaF05fLARDYbnXSSk

+0

Я изменился, как вы сказали, но до сих пор такая же проблема. – Moshii

+0

Тогда вы должны делать что-то еще неправильно, но не можете понять, что на основе кода, который вы указали. Вот рабочий плункер, также добавленный к моему ответу: [http://plnkr.co/edit/EbzlaF05fLARDYbnXSSk](http://plnkr.co/edit/EbzlaF05fLARDYbnXSSk) – iH8

Смежные вопросы