tương tự trường hợp với tôi. Tôi đã vẽ tất cả các điểm đánh dấu từ GeoJson dữ liệu. Vì vậy, tôi đã viết hàm, được gọi nhiều lần khi nhấp vào nút. Chỉ cần thử nếu nó phù hợp với yêu cầu của bạn.
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());
}
Việc sử dụng tốt nhất chức năng này là trạng thái/điểm đánh dấu mới nhất/hiện tại. Bất cứ khi nào phương pháp này được gọi là tất cả các lớp sẽ được hiển thị ở mức thu phóng khiêm tốn.
Nguồn
2014-06-21 15:43:43
Ok, cảm ơn sự giúp đỡ. Vì vậy, nếu vào phút, mã của tôi thêm lớp geoJSON trông giống như: geojsonLayer.addGeoJSON (jsonData); map.addLayer (geojsonLayer); map.fitBounds (jsonGroup.getBounds()); Tôi sẽ đổi thành: geojsonLayer.addGeoJSON (jsonData); map.addLayer (geojsonLayer); var jsonGroup = new L.FeatureGroup (jsonData); map.fitBounds (jsonGroup.getBounds()); Và điều đó có hiệu quả không? – James
Xin lỗi, nó đã loại bỏ tất cả các định dạng ra khỏi bài viết của tôi ở trên và tôi không chắc chắn làm thế nào để bảo tồn nó khi tôi lưu bình luận. – James
Rất khó để gỡ lỗi trong các nhận xét. Bạn có thể dán mã của bạn qua tại http://jsfiddle.net để chỉ cho tôi những gì bạn đã có (hoặc ít nhất một phần của nó)? – Jason