Відповіді:
Цей підручник слугує хорошим прикладом:
1) Як показано в прикладі, встановіть базові шари зі змінною назвою, до якої можна отримати доступ до функції, де ви хочете їх програмно переключити.
var grayscale = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution}),
streets = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution});
2) Потім додайте та видаліть шари, які ви хочете додати чи видалити. Далі розміщується grayscale
шар для streets
шару. Це передбачає, що обидва grayscale
і streets
доступні в межах функції, в якій ви здійснюєте комутацію.
map.removeLayer(grayscale);
map.addLayer(streets);
3) Якщо ви використовуєте елемент управління шарами, L.control.layers
показаний у прикладі, тоді елемент керування відстежує те, що є на карті, і відповідно змінює прапорці.
З https://stackoverflow.com/a/33762133/4355695
Зазвичай шляхом простого додавання шару до карти (наприклад, myTileLayer.addTo (map)), якщо цей шар є частиною базових шарів або накладень керування шарами, останній автоматично оновить його статус (якщо ви додали базовий шар, радіо кнопки будуть вибрані відповідно; для накладання буде встановлено відповідний прапорець).
Я спробував, і це спрацювало: мені не потрібно займатись видаленням поточного базового рівня (або виясненням, хто з них активний у цьому питанні). Просто myTileLayer.addTo(map)
виконує роботу: якщо вона вже є частиною моїх базових шарів, то карта «переключається» на неї. Він автоматично видаляє поточний шар і змінюється на myTileLayer
.
mapboxUrl
&mapboxAttribution
?