From 64ad81cffa1efac14624b0936b359aae93594b5b Mon Sep 17 00:00:00 2001 From: ahocevar Date: Wed, 23 May 2018 16:23:37 +0200 Subject: [PATCH] Use calculated extent --- src/ol/VectorImageTile.js | 7 ++++++- src/ol/renderer/canvas/VectorTileLayer.js | 14 ++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/ol/VectorImageTile.js b/src/ol/VectorImageTile.js index ed70e8f9f1..bf51371ced 100644 --- a/src/ol/VectorImageTile.js +++ b/src/ol/VectorImageTile.js @@ -78,6 +78,11 @@ const VectorImageTile = function(tileCoord, state, sourceRevision, format, */ this.tileKeys = []; + /** + * @type {module:ol/extent~Extent} + */ + this.extent = null; + /** * @type {number} */ @@ -99,7 +104,7 @@ const VectorImageTile = function(tileCoord, state, sourceRevision, format, this.sourceTileListenerKeys_ = []; if (urlTileCoord) { - const extent = tileGrid.getTileCoordExtent(urlTileCoord); + const extent = this.extent = tileGrid.getTileCoordExtent(urlTileCoord); const resolution = tileGrid.getResolution(tileCoord[0]); const sourceZ = sourceTileGrid.getZForResolution(resolution); sourceTileGrid.forEachTileCoord(extent, sourceZ, function(sourceTileCoord) { diff --git a/src/ol/renderer/canvas/VectorTileLayer.js b/src/ol/renderer/canvas/VectorTileLayer.js index e4a7035691..f4530c302a 100644 --- a/src/ol/renderer/canvas/VectorTileLayer.js +++ b/src/ol/renderer/canvas/VectorTileLayer.js @@ -169,7 +169,7 @@ CanvasVectorTileLayerRenderer.prototype.createReplayGroup_ = function(tile, fram const sourceTileGrid = source.getTileGrid(); const tileGrid = source.getTileGridForProjection(projection); const resolution = tileGrid.getResolution(tile.tileCoord[0]); - const tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord); + const tileExtent = tile.extent; const zIndexKeys = {}; for (let t = 0, tt = tile.tileKeys.length; t < tt; ++t) { @@ -269,16 +269,11 @@ CanvasVectorTileLayerRenderer.prototype.forEachFeatureAtCoordinate = function(co /** @type {Array.} */ const renderedTiles = this.renderedTiles; - const source = /** @type {module:ol/source/VectorTile} */ (layer.getSource()); - const tileGrid = source.getTileGridForProjection(frameState.viewState.projection); let bufferedExtent, found; let i, ii, replayGroup; - let tile, tileCoord, tileExtent; for (i = 0, ii = renderedTiles.length; i < ii; ++i) { - tile = renderedTiles[i]; - tileCoord = tile.wrappedTileCoord; - tileExtent = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent); - bufferedExtent = buffer(tileExtent, hitTolerance * resolution, bufferedExtent); + const tile = renderedTiles[i]; + bufferedExtent = buffer(tile.extent, hitTolerance * resolution, bufferedExtent); if (!containsCoordinate(bufferedExtent, coordinate)) { continue; } @@ -388,8 +383,7 @@ CanvasVectorTileLayerRenderer.prototype.postCompose = function(context, frameSta continue; } const tileCoord = tile.tileCoord; - const worldOffset = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent)[0] - - tileGrid.getTileCoordExtent(tile.wrappedTileCoord, this.tmpExtent)[0]; + const worldOffset = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent)[0] - tile.extent[0]; let transform = undefined; for (let t = 0, tt = tile.tileKeys.length; t < tt; ++t) { const sourceTile = tile.getTile(tile.tileKeys[t]);