Use calculated extent

This commit is contained in:
ahocevar
2018-05-23 16:23:37 +02:00
parent 7149b6ddab
commit 64ad81cffa
2 changed files with 10 additions and 11 deletions

View File

@@ -78,6 +78,11 @@ const VectorImageTile = function(tileCoord, state, sourceRevision, format,
*/ */
this.tileKeys = []; this.tileKeys = [];
/**
* @type {module:ol/extent~Extent}
*/
this.extent = null;
/** /**
* @type {number} * @type {number}
*/ */
@@ -99,7 +104,7 @@ const VectorImageTile = function(tileCoord, state, sourceRevision, format,
this.sourceTileListenerKeys_ = []; this.sourceTileListenerKeys_ = [];
if (urlTileCoord) { if (urlTileCoord) {
const extent = tileGrid.getTileCoordExtent(urlTileCoord); const extent = this.extent = tileGrid.getTileCoordExtent(urlTileCoord);
const resolution = tileGrid.getResolution(tileCoord[0]); const resolution = tileGrid.getResolution(tileCoord[0]);
const sourceZ = sourceTileGrid.getZForResolution(resolution); const sourceZ = sourceTileGrid.getZForResolution(resolution);
sourceTileGrid.forEachTileCoord(extent, sourceZ, function(sourceTileCoord) { sourceTileGrid.forEachTileCoord(extent, sourceZ, function(sourceTileCoord) {

View File

@@ -169,7 +169,7 @@ CanvasVectorTileLayerRenderer.prototype.createReplayGroup_ = function(tile, fram
const sourceTileGrid = source.getTileGrid(); const sourceTileGrid = source.getTileGrid();
const tileGrid = source.getTileGridForProjection(projection); const tileGrid = source.getTileGridForProjection(projection);
const resolution = tileGrid.getResolution(tile.tileCoord[0]); const resolution = tileGrid.getResolution(tile.tileCoord[0]);
const tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord); const tileExtent = tile.extent;
const zIndexKeys = {}; const zIndexKeys = {};
for (let t = 0, tt = tile.tileKeys.length; t < tt; ++t) { for (let t = 0, tt = tile.tileKeys.length; t < tt; ++t) {
@@ -269,16 +269,11 @@ CanvasVectorTileLayerRenderer.prototype.forEachFeatureAtCoordinate = function(co
/** @type {Array.<module:ol/VectorImageTile>} */ /** @type {Array.<module:ol/VectorImageTile>} */
const renderedTiles = this.renderedTiles; const renderedTiles = this.renderedTiles;
const source = /** @type {module:ol/source/VectorTile} */ (layer.getSource());
const tileGrid = source.getTileGridForProjection(frameState.viewState.projection);
let bufferedExtent, found; let bufferedExtent, found;
let i, ii, replayGroup; let i, ii, replayGroup;
let tile, tileCoord, tileExtent;
for (i = 0, ii = renderedTiles.length; i < ii; ++i) { for (i = 0, ii = renderedTiles.length; i < ii; ++i) {
tile = renderedTiles[i]; const tile = renderedTiles[i];
tileCoord = tile.wrappedTileCoord; bufferedExtent = buffer(tile.extent, hitTolerance * resolution, bufferedExtent);
tileExtent = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent);
bufferedExtent = buffer(tileExtent, hitTolerance * resolution, bufferedExtent);
if (!containsCoordinate(bufferedExtent, coordinate)) { if (!containsCoordinate(bufferedExtent, coordinate)) {
continue; continue;
} }
@@ -388,8 +383,7 @@ CanvasVectorTileLayerRenderer.prototype.postCompose = function(context, frameSta
continue; continue;
} }
const tileCoord = tile.tileCoord; const tileCoord = tile.tileCoord;
const worldOffset = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent)[0] - const worldOffset = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent)[0] - tile.extent[0];
tileGrid.getTileCoordExtent(tile.wrappedTileCoord, this.tmpExtent)[0];
let transform = undefined; let transform = undefined;
for (let t = 0, tt = tile.tileKeys.length; t < tt; ++t) { for (let t = 0, tt = tile.tileKeys.length; t < tt; ++t) {
const sourceTile = tile.getTile(tile.tileKeys[t]); const sourceTile = tile.getTile(tile.tileKeys[t]);