From a99a1a47e9958537d194a111a1f66fb91fc4c3a4 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Tue, 21 May 2024 14:19:03 +0200 Subject: [PATCH 1/2] Fix execute() arguments --- src/ol/renderer/canvas/VectorTileLayer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ol/renderer/canvas/VectorTileLayer.js b/src/ol/renderer/canvas/VectorTileLayer.js index 376dab70c11..1d60900318c 100644 --- a/src/ol/renderer/canvas/VectorTileLayer.js +++ b/src/ol/renderer/canvas/VectorTileLayer.js @@ -779,7 +779,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer { rotation, hifi, replayTypes, - frameState.declutter === null ? undefined : frameState.declutter, + frameState.declutter?.[declutter], ); } if (contextSaved) { From 4c42fab8a5ab7c753725c41df4ed77dfdae2f6ef Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Tue, 21 May 2024 17:33:25 +0200 Subject: [PATCH 2/2] Add regression test --- .../renderer/canvas/vectortilelayer.test.js | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/test/browser/spec/ol/renderer/canvas/vectortilelayer.test.js b/test/browser/spec/ol/renderer/canvas/vectortilelayer.test.js index a112bbe33bb..6d36b867a1b 100644 --- a/test/browser/spec/ol/renderer/canvas/vectortilelayer.test.js +++ b/test/browser/spec/ol/renderer/canvas/vectortilelayer.test.js @@ -806,4 +806,48 @@ describe('ol/renderer/canvas/VectorTileLayer', function () { }); }); }); + + describe('mixed declutter settings', () => { + let map; + beforeEach((done) => { + const extent = [ + 1824704.739223726, 6141868.096770482, 1827150.7241288517, + 6144314.081675608, + ]; + const source = new VectorTileSource({ + format: new MVT(), + url: 'spec/ol/data/14-8938-5680.vector.pbf', + minZoom: 14, + maxZoom: 14, + }); + const layer1 = new VectorTileLayer({ + declutter: true, + extent: extent, + source: source, + }); + const layer2 = new VectorTileLayer({ + declutter: true, + extent: extent, + source: source, + }); + map = new Map({ + target: createMapDiv(100, 100), + layers: [layer1, layer2], + view: new View({ + center: getCenter(extent), + zoom: 14, + }), + }); + map.once('rendercomplete', () => done()); + }); + + afterEach(() => { + disposeMap(map); + }); + + it('works with a mix of decluttering enabled and disabled', () => { + map.getLayers().item(1).declutter_ = false; + expect(() => map.renderSync()).to.not.throwException(); + }); + }); });