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