Câu trả lời:
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 grayscale
lớp cho streets
lớp. Điều này giả định rằng cả hai grayscale
và streets
có 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.
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
.
mapboxUrl
&mapboxAttribution
?