Як програмно перемикати базовий шар у MapBox / Leaflet


12

У мене є кілька базових шарів, і потрібно перемикати їх програмно, залежно від різних дій та станів у моїй програмі. Не можу знайти, як, за життя мене.

Відповіді:


16

Цей підручник слугує хорошим прикладом:

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показаний у прикладі, тоді елемент керування відстежує те, що є на карті, і відповідно змінює прапорці.


ДЕ mapboxUrl& mapboxAttribution?
Мохаммед Даян

@MohammadDayyan вам потрібно звернутися до підручника, який пов’язаний вище
toms

0

З https://stackoverflow.com/a/33762133/4355695

Зазвичай шляхом простого додавання шару до карти (наприклад, myTileLayer.addTo (map)), якщо цей шар є частиною базових шарів або накладень керування шарами, останній автоматично оновить його статус (якщо ви додали базовий шар, радіо кнопки будуть вибрані відповідно; для накладання буде встановлено відповідний прапорець).

Я спробував, і це спрацювало: мені не потрібно займатись видаленням поточного базового рівня (або виясненням, хто з них активний у цьому питанні). Просто myTileLayer.addTo(map)виконує роботу: якщо вона вже є частиною моїх базових шарів, то карта «переключається» на неї. Він автоматично видаляє поточний шар і змінюється на myTileLayer.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.