我想从地图中删除源和图层。每当我想要删除源和layerrs表单映射时,我都会使用removeSourceAndLayers()函数。
const removeSourceAndLayers=(map)=>{
for(var i=0;i<dataSet.length;i++){
try{
// source or layer might not pesent
// which we are trying to remove
if(map.getLayer(`empty-source-${i}`))
map.removeLayer(`empty-source-${i}`);
if(map.getLayer(`complete-source-${i}`))
map.removeLayer(`complete-source-${i}`);
if(map.getSource(`empty-source-${i}`))
map.removeSource(`empty-source-${i}`);
if(map.getSource(`complete-source-${i}`));
map.removeSource(`complete-source-${i}`);
}catch(e){
console.log(e);
}
}
}我得到了这个错误。
DynamicRoute.jsx:39 Error: There is no source with this ID
at i.removeSource (mapbox-gl.js:35)
at r.removeSource (mapbox-gl.js:35)
at removeSourceAndLayers (DynamicRoute.jsx:37)
at clean (DynamicRoute.jsx:93)
at commitHookEffectListUnmount (react-dom.development.js:19710)
at commitPassiveHookEffects (react-dom.development.js:19768)我正在检查是否有当前id出现的源和层,然后删除否则的continue.But,仍然出现错误。
jsx:39行是console.log(e);。
发布于 2020-11-18 12:39:57
最后一个if语句有一个;在最后,如果删除它,它将工作。
if(map.getSource(`complete-source-${i}`)); // <---
map.removeSource(`complete-source-${i}`);按照现在编写代码的方式,它的结果将与下面的代码相同,map.removeSource()总是被调用:
if(map.getSource(`complete-source-${i}`)) {
}
map.removeSource(`complete-source-${i}`);https://stackoverflow.com/questions/64874900
复制相似问题