簡體   English   中英

錯誤:mapbox-gl-js 中沒有此 ID 的源

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM