fitBounds маркеров с листовкой

У меня есть массив маркеров с именем markers, и я добавляю эти маркеры на карту, используя LeafletJs

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] });.


person Moshii    schedule 12.12.2014    source источник


Ответы (1)


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

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

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

person iH8    schedule 12.12.2014
comment
Я изменил, как вы сказали, но все еще имеет ту же проблему. - person Moshii; 13.12.2014
comment
Тогда вы, должно быть, делаете что-то еще неправильно, но не видите, что на основе кода, который вы дали. Вот рабочий планкер, также добавленный к моему ответу: http://plnkr.co/edit/EbzlaF05fLARDYbnXSSk - person iH8; 13.12.2014
comment
Требуется рабочий пример ‹link [email protected] - person flywire; 16.09.2020