diff --git a/src/ol/renderer/webgl/TileLayer.js b/src/ol/renderer/webgl/TileLayer.js index ec85963a46..f77b792770 100644 --- a/src/ol/renderer/webgl/TileLayer.js +++ b/src/ol/renderer/webgl/TileLayer.js @@ -100,7 +100,9 @@ function getRenderExtent(frameState, extent) { const source = /** {import("../../source/Tile.js").default} */ layerState.layer.getSource(); if (!source.getWrapX()) { - const gridExtent = source.tileGrid.getExtent(); + const gridExtent = source + .getTileGridForProjection(frameState.viewState.projection) + .getExtent(); if (gridExtent) { extent = getIntersection(extent, gridExtent); } diff --git a/test/rendering/cases/webgl-tile-no-wrap/expected.png b/test/rendering/cases/webgl-tile-no-wrap/expected.png new file mode 100644 index 0000000000..cd90580e74 Binary files /dev/null and b/test/rendering/cases/webgl-tile-no-wrap/expected.png differ diff --git a/test/rendering/cases/webgl-tile-no-wrap/main.js b/test/rendering/cases/webgl-tile-no-wrap/main.js new file mode 100644 index 0000000000..f05d6f9acb --- /dev/null +++ b/test/rendering/cases/webgl-tile-no-wrap/main.js @@ -0,0 +1,27 @@ +import Map from '../../../../src/ol/Map.js'; +import TileLayer from '../../../../src/ol/layer/WebGLTile.js'; +import View from '../../../../src/ol/View.js'; +import XYZ from '../../../../src/ol/source/XYZ.js'; + +document.getElementById('map').style.background = 'green'; + +new Map({ + layers: [ + new TileLayer({ + source: new XYZ({ + url: '/data/tiles/satellite/{z}/{x}/{y}.jpg', + transition: 0, + wrapX: false, + }), + }), + ], + target: 'map', + view: new View({ + center: [15700000, 2700000], + zoom: 2, + }), +}); + +render({ + message: 'data tiles outside the world are not rendered', +});