Похожие случай со мной. Я нарисовал все маркеры от GeoJson данные. Поэтому я написал функцию, которая вызывается повторно при нажатии кнопки. Просто попробуйте, если это соответствует вашим требованиям.
function bestFitZoom()
{
// declaring the group variable
var group = new L.featureGroup;
// map._layers gives all the layers of the map including main container
// so looping in all those layers filtering those having feature
$.each(map._layers, function(ml){
// here we can be more specific to feature for point, line etc.
if(map._layers[].feature)
{
group.addLayer(this)
}
})
map.fitBounds(group.getBounds());
}
Лучшее использование написания этой функции является то, что даже состояние отображения/маркеров изменилось, она получит последнее/текущее состояние маркеров/слоев. Всякий раз, когда этот метод вызывается, все слои будут видны до скромного уровня масштабирования.
Хорошо, спасибо за помощь. Так что если в тот же момент мой код, добавляющий слой geoJSON, выглядит так: geojsonLayer.addGeoJSON (jsonData); map.addLayer (geojsonLayer); map.fitBounds (jsonGroup.getBounds()); Я бы поменял его на: geojsonLayer.addGeoJSON (jsonData); map.addLayer (geojsonLayer); var jsonGroup = new L.FeatureGroup (jsonData); map.fitBounds (jsonGroup.getBounds()); И что должно работать? – James
Извините, он разделил все форматирование моего сообщения выше, и я не уверен, как сохранить его, когда я сохраняю комментарий. – James
Очень сложно отлаживать комментарии. Можете ли вы вставить свой код на http://jsfiddle.net, чтобы показать мне, что у вас есть (или, по крайней мере, часть его)? – Jason