Как программно переключить базовый слой в 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 вам нужно обратиться к учебнику, который связан выше
Томс

0

С /programming//a/33762133/4355695

Обычно, просто добавляя слой на карту (например, myTileLayer.addTo (map)), если этот слой является частью базовых слоев или оверлеев Layers Control, последний автоматически обновит свой статус (если вы добавили базовый слой, переключатели будут выбраны соответственно; для наложения будет установлен соответствующий флажок).

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.