Cách chuyển đổi lớp cơ sở theo chương trình trong MapBox / Leaflet


12

Tôi có nhiều lớp cơ sở và cần chuyển đổi chúng theo chương trình, phụ thuộc vào các hành động và trạng thái khác nhau trong ứng dụng của tôi. Không thể tìm thấy làm thế nào, cho cuộc sống của tôi.

Câu trả lời:


16

Hướng dẫn này phục vụ như một ví dụ tốt:

1) Như trong ví dụ, thiết lập các lớp cơ sở của bạn với một tên biến có thể được truy cập trong hàm nơi bạn muốn chuyển đổi chúng theo chương trình.

var grayscale = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution}),
    streets   = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution});

2) Sau đó thêm và xóa các lớp bạn muốn thêm hoặc xóa. Sau đây hoán đổi grayscalelớp cho streetslớp. Điều này giả định rằng cả hai grayscalestreetscó sẵn trong phạm vi của chức năng nơi bạn đang thực hiện chuyển đổi.

map.removeLayer(grayscale);
map.addLayer(streets);

3) Nếu bạn đang sử dụng điều khiển lớp L.control.layersđược hiển thị trong ví dụ, thì điều khiển sẽ theo dõi những gì trên bản đồ và thay đổi các hộp kiểm cho phù hợp.


Là gì mapboxUrl& mapboxAttribution?
Mohammad Dayyan

@MohammadDayyan bạn cần tham khảo hướng dẫn được liên kết ở trên
toms

0

Từ /programming//a/33762133/4355695

Thông thường chỉ bằng cách thêm một lớp vào bản đồ (ví dụ myTileLayer.addTo (map)), nếu lớp đó là một phần của các lớp cơ sở hoặc lớp phủ của Điều khiển lớp, lớp sau sẽ tự động cập nhật trạng thái của nó (nếu bạn đã thêm một lớp cơ sở, các nút radio sẽ được chọn tương ứng, đối với lớp phủ, hộp kiểm tương ứng sẽ được đánh dấu).

Tôi đã thử và nó đã hoạt động: Tôi không cần bận tâm đến việc xóa lớp cơ sở hiện tại (hoặc tìm ra cái nào hoạt động cho vấn đề đó). Chỉ cần myTileLayer.addTo(map)thực hiện công việc: Nếu nó đã là một phần của các cơ sở của tôi, thì bản đồ "chuyển" sang nó. Nó tự động loại bỏ lớp hiện tại và thay đổi thành myTileLayer.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.