0
我使用的是OpenLayers 3(v3.20)。我想要實現的只是從特定層中刪除所有功能。我看到有一個clear方法和文檔中說,該源代碼在OpenLayers中清除BUG 3
清晰(opt_fast)
取下源的所有功能。
然而,當我把它應用到我的層源像這樣:
layer.getSource().clear();
我看到一個閃爍(功能被刪除),然後我看到一個服務器請求,這樣的功能是重新裝入。所以,要麼文檔不完整,要麼有錯誤。
我也試圖去除像這樣的特點:
features = source.getFeatures();
for (i = 0; i < features.length; i += 1) {
source.removeFeature(features[i]);
}
但它的作品真的很奇怪。例如,如果我有四個功能,當我循環一次時,它只會刪除兩個功能,當我循環兩次時,會刪除一個額外的功能。總而言之,我必須循環三次(這實際上不是DRY)才能刪除所有功能。我真的很想知道,爲什麼是這樣,我該如何解決它。謝謝!
當你看超過按索引刪除數字1,然後刪除數字2成爲新的數字1.因此,對於每一個你刪除你跳過一個,即只有一半被刪除。爲了解決這個問題,可以改變這個循環,而是使用for(var i = features.length -1; i> = 0; i - )'。 –
@ Karl-JohanSjögren。好的建議!謝謝你,先生! – Jacobian
'layer.clear()'在地圖圖層被清除後觸發地圖圖層重新加載。解決這個問題的方法是使用矢量加載器函數,如果您在使用'.clear()'時設置標誌,則可以繞過重新加載。 – GoinOff