From 9ca75e9d430a60fbcab46191d037eaebbb9ed734 Mon Sep 17 00:00:00 2001 From: Olivier Guyot Date: Tue, 14 May 2019 19:09:08 +0200 Subject: [PATCH] Webgl points / rebuild buffers when source change --- src/ol/renderer/webgl/PointsLayer.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ol/renderer/webgl/PointsLayer.js b/src/ol/renderer/webgl/PointsLayer.js index 293e84f67d..fc08b266d8 100644 --- a/src/ol/renderer/webgl/PointsLayer.js +++ b/src/ol/renderer/webgl/PointsLayer.js @@ -310,7 +310,8 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer { const stride = 12; // the source has changed: clear the feature cache & reload features - if (this.sourceRevision_ < vectorSource.getRevision()) { + const sourceChanged = this.sourceRevision_ < vectorSource.getRevision(); + if (sourceChanged) { this.sourceRevision_ = vectorSource.getRevision(); this.geojsonFeatureCache_ = {}; @@ -319,8 +320,9 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer { vectorSource.loadFeatures([-Infinity, -Infinity, Infinity, Infinity], resolution, projection); } - if (!frameState.viewHints[ViewHint.ANIMATING] && !frameState.viewHints[ViewHint.INTERACTING] && - !equals(this.previousExtent_, frameState.extent)) { + const viewNotMoving = !frameState.viewHints[ViewHint.ANIMATING] && !frameState.viewHints[ViewHint.INTERACTING]; + const extentChanged = !equals(this.previousExtent_, frameState.extent); + if ((sourceChanged || extentChanged) && viewNotMoving) { this.rebuildBuffers_(frameState); this.previousExtent_ = frameState.extent.slice(); }