diff --git a/rendering/cases/source-vectortile-declutter/expected.png b/rendering/cases/source-vectortile-declutter/expected.png new file mode 100644 index 0000000000..e1ede79331 Binary files /dev/null and b/rendering/cases/source-vectortile-declutter/expected.png differ diff --git a/rendering/cases/source-vectortile-declutter/main.js b/rendering/cases/source-vectortile-declutter/main.js new file mode 100644 index 0000000000..dac6b8b6b1 --- /dev/null +++ b/rendering/cases/source-vectortile-declutter/main.js @@ -0,0 +1,60 @@ +import Feature from '../../../src/ol/Feature.js'; +import Map from '../../../src/ol/Map.js'; +import Point from '../../../src/ol/geom/Point.js'; +import VectorTileLayer from '../../../src/ol/layer/VectorTile.js'; +import VectorTileSource from '../../../src/ol/source/VectorTile.js'; +import View from '../../../src/ol/View.js'; +import {Circle, Fill, Stroke, Style} from '../../../src/ol/style.js'; +import {createXYZ} from '../../../src/ol/tilegrid.js'; + +const points = [[0, 0]]; + +const vectorTileSource = new VectorTileSource({ + tileGrid: createXYZ({ + extent: [-20000000, -10000000, 10000000, 20000000], + tileSize: 512, + }), + tileUrlFunction: (tileCoord) => tileCoord, + tileLoadFunction(tile, tileCoord) { + const features = points.map( + (corner) => + new Feature({ + geometry: new Point(corner), + tileCoord, + }) + ); + tile.setFeatures(features); + }, +}); + +const vectorTileLayer = new VectorTileLayer({ + declutter: true, + source: vectorTileSource, + style: new Style({ + image: new Circle({ + radius: 100, + fill: new Fill({ + color: 'rgba(255, 0, 0, 0.5)', + }), + stroke: new Stroke({ + width: 1, + color: 'black', + }), + }), + }), +}); + +new Map({ + target: 'map', + layers: [vectorTileLayer], + view: new View({ + center: [0, 0], + zoom: 4, + multiWorld: true, + }), +}); + +render({ + message: + 'Vector tile source tile grid different from render tile grid, with decluttering', +}); diff --git a/src/ol/renderer/canvas/VectorTileLayer.js b/src/ol/renderer/canvas/VectorTileLayer.js index 39b6676075..8afbeb1178 100644 --- a/src/ol/renderer/canvas/VectorTileLayer.js +++ b/src/ol/renderer/canvas/VectorTileLayer.js @@ -361,7 +361,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer { tile.executorGroups[layerUid].push(renderingReplayGroup); if (declutterBuilderGroup) { const declutterExecutorGroup = new CanvasExecutorGroup( - replayExtent, + null, resolution, pixelRatio, source.getOverlaps(),