如果更改地图样式,则mapbox将丢失源和图层。 因此,我想在重新加载新样式后获取原始图层并重新添加图层。
这是一个坏案例: https://codepen.io/ahuigo/pen/vqObBp
var origin_data = [];
function switchStyle(style) {
var layerId = style.target.id;
var {type, _data} = map.getSource('point1')
var source = {type, data:_data}
var sourceLayer = map.getLayer('point1')
console.log('',source,sourceLayer)
origin_data = []
origin_data.push(['point1',source, sourceLayer])
map.setStyle('mapbox://styles/mapbox/' + layerId);
}
map.on('style.load', ()=> {
for(let [id, source,sourceLayer] of origin_data) {
console.log(id,source,sourceLayer)
if(source){
map.addSource(id, source)
map.addLayer(sourceLayer)
}
}
//addSource(); reloadLayer()
});
这种情况表明,如果更改样式,则mapbox会丢失图层。