[英]Error: There is no source with this ID in mapbox-gl-js
我想從地圖中刪除源和圖層。 每當我想刪除源和圖層表單地圖時,我都會使用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 然后刪除否則繼續。但是,仍然出現錯誤。
jsx:39行是console.log(e);
.
你的最后一個 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}`);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.