Mapbox-GL setStyle удаляет слои
Я создаю картографическое веб-приложение с помощью Mapbox-GL. Он имеет много интересных функций. Я настроил кнопки для переключения базовых карт (т. е. спутник, местность и т. д.), Следуя примеру на веб-сайт Mapbox.
проблема в том, что когда я меняю стиль, он удаляет мои полигоны, загруженные как слои, и перезагружает карту. Я загружаю полигоны из базы данных Mongo в виде слоев на основе пользовательских запросов. Я хочу иметь возможность менять базу сопоставьте и сохраните эти слои.
есть ли способ изменить стиль без перезагрузки карты или, по крайней мере, не сбрасывать слои?
вот мой код для коммутатора, он такой же, как пример, но я добавил условие для пользовательского стиля:
var layerList = document.getElementById('menu');
var inputs = layerList.getElementsByTagName('input');
function switchLayer(layer) {
var layerId = layer.target.id;
if (layerId === 'outdoors') {
map.setStyle('/outdoors-v8.json');
} else {
map.setStyle('mapbox://styles/mapbox/' + layerId + '-v8');
}
}
for (var i = 0; i < inputs.length; i++) {
inputs[i].onclick = switchLayer;
}
1 ответов
вот пример, демонстрирующий, что:http://bl.ocks.org/tristen/0c0ed34e210a04e89984
В отличие от библиотеки карт, такой как Leaftlet, Mapbox GL JS не имеет понятия "базовая карта" против "других слоев."Все слои являются частью одной и той же сущности: стиль. Поэтому вам нужно сохранить некоторое состояние слоя данных и вызывать его источник / addLayer при каждом изменении.