2013-06-24 55 views
37

im bằng cách sử dụng Leaflet.js và muốn một số cách căn giữa bản đồ trên các điểm đánh dấu tôi có, để tất cả nằm trong chế độ xem của người dùng khi trang khởi chạy. Nếu tất cả các điểm đánh dấu được nhóm lại trong một khu vực nhỏ, tôi muốn bản đồ phóng to đến mức vẫn hiển thị tất cả các điểm đánh dấu đó.Leaflet.js căn giữa bản đồ trên một nhóm các điểm đánh dấu

Tôi biết bản đồ google có chức năng autocenter nhưng làm thế nào tôi sẽ đi về điều này với Leaflet.js?

Trả lời

80

Bạn có thể sử dụng L.LatLngBounds để tạo khu vực để phóng to.

Đầu tiên, tạo một vọt và vượt qua nó một mảng của L.LatLngs:

var bounds = new L.LatLngBounds(arrayOfLatLngs); 

này sẽ tạo ra một giới hạn mà sẽ đóng gói tất cả các điểm được chứa trong mảng. Một khi bạn có giới hạn, bạn có thể phù hợp với những giới hạn của bản đồ để phù hợp với bạn tạo ra ràng buộc:

map.fitBounds(bounds); 

này sẽ phóng to bản đồ ở xa như nó có thể đi, trong khi vẫn có chứa tất cả các điểm trong mảng của bạn.

Ngoài ra, bạn cũng có thể gọi phương thức fitBounds đơn giản bằng cách gọi và chuyển qua một mảng đối tượng L.LatLng. Ví dụ:

map.fitBounds([[1,1],[2,2],[3,3]]); 

Điều này có chức năng giống hệt nhau, không cần phải tạo đối tượng cụ thể L.LatLngBounds.

+0

Công trình này, mặc dù với giới hạn phù hợp bạn có thể đã đề cập rằng các giới hạn bạn cần là tây bắc và đông nam. Để tham khảo trong tương lai bất cứ ai sử dụng điều này, bạn sẽ phải tìm các giá trị tối đa và tối thiểu cho cả vĩ độ và kinh độ trên các điểm đánh dấu của bạn. – lorless

+6

'L.LatLngBounds' có hai hàm tạo. Một trong số đó là những gì bạn mô tả - hai điểm, tây bắc và đông nam. Tuy nhiên, hàm tạo thứ hai nhận một mảng 'L.LatLngs' có kích thước bất kỳ. Ngoài ra, bạn có thể gọi 'L.LatLngBounds.extend()' để tăng kích thước của một giới hạn hiện có. Sử dụng một trong hai tùy chọn này, bạn không bao giờ phải lớn hơn/ít hơn kiểm tra để tự tăng kích thước của giới hạn. –

+0

Câu trả lời tuyệt vời và cảm ơn bạn đã theo dõi các câu hỏi nhận xét, vì giải thích đã giúp hiểu rõ hơn về chức năng (thậm chí 3 năm sau) – redfox05

Các vấn đề liên quan