簡體   English   中英

OpenLayers 3中的源代碼清除BUG

[英]source clear BUG in OpenLayers 3

我正在使用OpenLayers 3(v3.20)。 我要實現的只是從特定圖層中刪除所有功能。 我看到有一個明確的方法,文檔說,

清除(opt_fast)

從源中刪除所有功能。

但是,當我像這樣將其應用於圖層源時:

layer.getSource().clear();

我看到閃爍(功能已刪除),然后看到服務器請求,以便再次重新加載功能。 因此,要么文檔不完整,要么存在錯誤。

我還嘗試刪除以下功能:

features = source.getFeatures();
for (i = 0; i < features.length; i += 1) {
    source.removeFeature(features[i]);
}

但這確實很奇怪。 例如,如果我有四個功能,則當我循環一次時,它將僅刪除兩個功能,而當我循環兩次時,將刪除一個額外的功能。 總而言之,我必須循環3次(實際上不是DRY)才能刪除所有功能。 我真的很好奇,為什么會這樣以及如何解決它。 謝謝!

正如Karl-JohanSjögren指出的那樣,在迭代遍歷時刪除數組成員會修改數組本身,因此,您可以使用反向數組或使用Array MDN參考中的本機函數:

features = source.getFeatures();
features.forEach(function (feature){
  source.removeFeature(feature);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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