From 8fd38d7cf4c5eb1d41a4c8867995b5a4aea64317 Mon Sep 17 00:00:00 2001 From: Olivia Guyot Date: Wed, 13 Sep 2023 20:21:02 +0200 Subject: [PATCH] add rendering test for vector tiles masking --- .../webgl-vectortile-masking/expected.png | Bin 0 -> 18772 bytes .../cases/webgl-vectortile-masking/main.js | 96 ++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 test/rendering/cases/webgl-vectortile-masking/expected.png create mode 100644 test/rendering/cases/webgl-vectortile-masking/main.js diff --git a/test/rendering/cases/webgl-vectortile-masking/expected.png b/test/rendering/cases/webgl-vectortile-masking/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..a871998e3ed0f44f836656c4b6090c2aeab9b584 GIT binary patch literal 18772 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 literal 0 HcmV?d00001 diff --git a/test/rendering/cases/webgl-vectortile-masking/main.js b/test/rendering/cases/webgl-vectortile-masking/main.js new file mode 100644 index 00000000000..7cb47cadca3 --- /dev/null +++ b/test/rendering/cases/webgl-vectortile-masking/main.js @@ -0,0 +1,96 @@ +import Map from '../../../../src/ol/Map.js'; +import Polygon from '../../../../src/ol/geom/Polygon.js'; +import RenderFeature from '../../../../src/ol/render/Feature.js'; +import VectorTile from '../../../../src/ol/layer/VectorTile.js'; +import VectorTileSource from '../../../../src/ol/source/VectorTile.js'; +import View from '../../../../src/ol/View.js'; +import WebGLVectorTileLayerRenderer from '../../../../src/ol/renderer/webgl/VectorTileLayer.js'; + +const source = new VectorTileSource({ + tileSize: 64, + url: '{z}/{x}/{y}', + tileLoadFunction: (tile) => { + const z = tile.tileCoord[0]; + if (z > 2 && tile.tileCoord[1] > tile.tileCoord[2]) { + return; + } + const extent = source.getTileGrid().getTileCoordExtent(tile.tileCoord); + const delta = (extent[2] - extent[0]) * 0.1; + const square = new Polygon([ + [ + [extent[0] + 2 * delta, extent[1] + 2 * delta], + [extent[2] - 2 * delta, extent[1] + 2 * delta], + [extent[2] - 2 * delta, extent[3] - 2 * delta], + [extent[0] + 2 * delta, extent[3] - 2 * delta], + [extent[0] + 2 * delta, extent[1] + 2 * delta], + ], + ]); + const innerSquare = new Polygon([ + [ + [extent[0] + 4 * delta, extent[1] + 4 * delta], + [extent[2] - 4 * delta, extent[1] + 4 * delta], + [extent[2] - 4 * delta, extent[3] - 4 * delta], + [extent[0] + 4 * delta, extent[3] - 4 * delta], + [extent[0] + 4 * delta, extent[1] + 4 * delta], + ], + ]); + + const features = [ + new RenderFeature( + 'Polygon', + square.getFlatCoordinates(), + square.getEnds(), + {}, + 1 + ), + new RenderFeature( + 'Polygon', + innerSquare.getFlatCoordinates(), + innerSquare.getEnds(), + {}, + 2 + ), + ]; + tile.setFeatures(features); + }, +}); + +class WebGLVectorTileLayer extends VectorTile { + createRenderer() { + return new WebGLVectorTileLayerRenderer(this, { + className: this.getClassName(), + style: { + 'fill-color': '#eee', + 'stroke-color': 'rgb(136,136,136, 0.5)', + 'stroke-width': 2, + 'circle-radius': 2, + 'circle-fill-color': '#707070', + }, + }); + } +} + +const map = new Map({ + pixelRatio: 2, + layers: [ + new WebGLVectorTileLayer({ + source, + }), + ], + target: 'map', + view: new View({ + center: [0, -100000000], + zoom: 0, + }), +}); +map.getView().setRotation(Math.PI / 8); +setTimeout(() => { + map.getView().setZoom(1); + setTimeout(() => { + render({ + message: + 'Vector tiles from lower zoom levels are hidden by higher zoom levels', + tolerance: 0.001, + }); + }, 5); +}, 5);