From 7525c57688ad98c9c8ef39c7d6b5bd0c73093f64 Mon Sep 17 00:00:00 2001 From: William Wall Date: Wed, 19 Sep 2018 14:39:10 -0600 Subject: [PATCH 1/2] Check the type of the source before using it This satisfies tsc in addition to making the class more defensive against source types that it does not support. --- src/ol/renderer/webgl/TileLayer.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ol/renderer/webgl/TileLayer.js b/src/ol/renderer/webgl/TileLayer.js index f263dddc52..fc07e504a0 100644 --- a/src/ol/renderer/webgl/TileLayer.js +++ b/src/ol/renderer/webgl/TileLayer.js @@ -7,6 +7,7 @@ import LayerType from '../../LayerType.js'; import TileRange from '../../TileRange.js'; import TileState from '../../TileState.js'; +import TileSource from '../../source/Tile.js'; import {numberSafeCompareFunction} from '../../array.js'; import {createEmpty, intersects} from '../../extent.js'; import {roundUpToPowerOfTwo} from '../../math.js'; @@ -152,6 +153,10 @@ class WebGLTileLayerRenderer extends WebGLLayerRenderer { const tileLayer = /** @type {import("../../layer/Tile.js").default} */ (this.getLayer()); const tileSource = tileLayer.getSource(); + if (!(tileSource instanceof TileSource)) { + return true; + } + const tileGrid = tileSource.getTileGridForProjection(projection); const z = tileGrid.getZForResolution(viewState.resolution); const tileResolution = tileGrid.getResolution(z); From 016436ae1882e2104fc085aa098b5925ef547305 Mon Sep 17 00:00:00 2001 From: William Wall Date: Wed, 19 Sep 2018 15:04:14 -0600 Subject: [PATCH 2/2] Check that tile is ImageTile before using it --- src/ol/renderer/webgl/TileLayer.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/ol/renderer/webgl/TileLayer.js b/src/ol/renderer/webgl/TileLayer.js index fc07e504a0..9c72597c9f 100644 --- a/src/ol/renderer/webgl/TileLayer.js +++ b/src/ol/renderer/webgl/TileLayer.js @@ -5,6 +5,7 @@ // FIXME animated shaders! check in redraw import LayerType from '../../LayerType.js'; +import ImageTile from '../../ImageTile.js'; import TileRange from '../../TileRange.js'; import TileState from '../../TileState.js'; import TileSource from '../../source/Tile.js'; @@ -286,6 +287,11 @@ class WebGLTileLayerRenderer extends WebGLLayerRenderer { const tilesToDraw = tilesToDrawByZ[zs[i]]; for (const tileKey in tilesToDraw) { tile = tilesToDraw[tileKey]; + + if (!(tile instanceof ImageTile)) { + continue; + } + tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent); u_tileOffset[0] = 2 * (tileExtent[2] - tileExtent[0]) / framebufferExtentDimension;