Merge pull request #9778 from ahocevar/faster-getsourcetiles

Return existing source tiles if at target resolution
This commit is contained in:
Andreas Hocevar
2019-07-19 16:55:25 +02:00
committed by GitHub
+6 -4
View File
@@ -179,9 +179,7 @@ class VectorTile extends UrlTile {
* @return {Array<import("../VectorTile").default>} Tile keys. * @return {Array<import("../VectorTile").default>} Tile keys.
*/ */
getSourceTiles(pixelRatio, projection, tile) { getSourceTiles(pixelRatio, projection, tile) {
const sourceTiles = [];
const urlTileCoord = tile.wrappedTileCoord; const urlTileCoord = tile.wrappedTileCoord;
if (urlTileCoord) {
const tileGrid = this.getTileGridForProjection(projection); const tileGrid = this.getTileGridForProjection(projection);
const extent = tileGrid.getTileCoordExtent(urlTileCoord); const extent = tileGrid.getTileCoordExtent(urlTileCoord);
const z = urlTileCoord[0]; const z = urlTileCoord[0];
@@ -196,6 +194,12 @@ class VectorTile extends UrlTile {
const sourceZ = sourceTileGrid.getZForResolution(resolution, 1); const sourceZ = sourceTileGrid.getZForResolution(resolution, 1);
const minZoom = sourceTileGrid.getMinZoom(); const minZoom = sourceTileGrid.getMinZoom();
const previousSourceTiles = this.sourceTilesByTileKey_[getKey(tile.tileCoord)];
if (previousSourceTiles && previousSourceTiles.length > 0 && previousSourceTiles[0].tileCoord[0] === sourceZ) {
return previousSourceTiles;
}
const sourceTiles = [];
let loadedZ = sourceZ + 1; let loadedZ = sourceZ + 1;
let covered, empty; let covered, empty;
do { do {
@@ -265,7 +269,6 @@ class VectorTile extends UrlTile {
if (covered || empty) { if (covered || empty) {
tile.hifi = sourceZ === loadedZ; tile.hifi = sourceZ === loadedZ;
tile.sourceZ = loadedZ; tile.sourceZ = loadedZ;
const previousSourceTiles = this.sourceTilesByTileKey_[getKey(tile.tileCoord)];
if (tile.getState() < TileState.LOADED) { if (tile.getState() < TileState.LOADED) {
tile.setState(empty ? TileState.EMPTY : TileState.LOADED); tile.setState(empty ? TileState.EMPTY : TileState.LOADED);
} else if (!previousSourceTiles || !equals(sourceTiles, previousSourceTiles)) { } else if (!previousSourceTiles || !equals(sourceTiles, previousSourceTiles)) {
@@ -273,7 +276,6 @@ class VectorTile extends UrlTile {
this.addSourceTiles(tile, sourceTiles); this.addSourceTiles(tile, sourceTiles);
} }
} }
}
return sourceTiles; return sourceTiles;
} }