簡體   English   中英

如何強制重繪圖層

[英]How to force to redraw a layer

我正在尋找一種重繪存儲在圖層中的所有特征的方法(相當於使用OL2的方法“重繪”)

ol.layer.Vector類的“ changed”方法僅“刷新”地圖上可見的特征(例如在縮放部分中),因此不會影響外部特征

處理這些數據的方法是定期刪除舊功能

我怎樣才能做到這一點?

另一個問題是如何通知此特定刪除已結束?

提前致謝

讓 - 瑪麗·

首先感謝您的回答

我的問題實際上需要更多信息:

瀏覽器客戶端通過實時Websocket連接接收點

每秒,將從這些點收集的一系列新特征以這種方式添加到Vector層中:

vectorLayer.getSource().addFeatures(features);

源緩沖區的持續時間為例如一小時,並且為了管理一小時的時間滑動窗口,每分鍾都會刪除舊功能

        map.once('postrender',removeOldFeatures);
        vectorLayer.changed(); or map.renderSync();

僅針對可見特征正確執行此刪除

但是,由於某些特征(例如,由於未顯示那些特征的地圖部分的縮放)而使某些特征不可見時,無論使用哪種方法(vectorLayer),都不會對那些特征執行移除處理(removeOldFeatures)。改變()或map.render())的結果是功能的數量並沒有停止增加...

讓 - 瑪麗·

我對TileVector源和格式GeoJSON遇到了同樣的問題。 最后,我使用提供的TileUrlFunction並重新繪制圖層,我只是使用layer.setSource(yourdefinedSource)方法再次設置了Source。 杜貝說得對。 在大多數情況下(如果源經常更新),發送唯一的參數(如unix時間戳)作為cachebuster很有用。

暫無
暫無

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

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