diff --git a/src/ol/renderer/canvas/VectorLayer.js b/src/ol/renderer/canvas/VectorLayer.js index 82f89d34e70..c5025e47d55 100644 --- a/src/ol/renderer/canvas/VectorLayer.js +++ b/src/ol/renderer/canvas/VectorLayer.js @@ -126,6 +126,12 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer { */ this.renderedRenderOrder_ = null; + /** + * @private + * @type {boolean} + */ + this.renderedFrameDeclutter_; + /** * @private * @type {import("../../render/canvas/ExecutorGroup").default} @@ -628,6 +634,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer { this.renderedResolution_ == resolution && this.renderedRevision_ == vectorLayerRevision && this.renderedRenderOrder_ == vectorLayerRenderOrder && + this.renderedFrameDeclutter_ === !!frameState.declutter && containsExtent(this.wrappedRenderedExtent_, extent) ) { if (!equals(this.renderedExtent_, renderedExtent)) { @@ -721,6 +728,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer { this.renderedResolution_ = resolution; this.renderedRevision_ = vectorLayerRevision; this.renderedRenderOrder_ = vectorLayerRenderOrder; + this.renderedFrameDeclutter_ = !!frameState.declutter; this.renderedExtent_ = renderedExtent; this.wrappedRenderedExtent_ = extent; this.renderedCenter_ = center; diff --git a/test/browser/spec/ol/renderer/canvas/VectorLayer.test.js b/test/browser/spec/ol/renderer/canvas/VectorLayer.test.js index d72b69c8da6..c40aaca12f0 100644 --- a/test/browser/spec/ol/renderer/canvas/VectorLayer.test.js +++ b/test/browser/spec/ol/renderer/canvas/VectorLayer.test.js @@ -412,6 +412,9 @@ describe('ol/renderer/canvas/VectorLayer', function () { expect(renderer.replayGroupChanged).to.be(true); renderer.prepareFrame(frameState); expect(renderer.replayGroupChanged).to.be(false); + frameState.declutter = {}; + renderer.prepareFrame(frameState); + expect(renderer.replayGroupChanged).to.be(true); }); it('dispatches a postrender event when rendering', function () {