From 0e55e0625e64499166f92cd3104dae05c795e2d6 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Wed, 21 Dec 2016 14:42:12 +0100 Subject: [PATCH] Use interim tiles --- src/ol/renderer/canvas/tilelayer.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/ol/renderer/canvas/tilelayer.js b/src/ol/renderer/canvas/tilelayer.js index 18640c4c5d..3ec218817e 100644 --- a/src/ol/renderer/canvas/tilelayer.js +++ b/src/ol/renderer/canvas/tilelayer.js @@ -80,6 +80,19 @@ ol.renderer.canvas.TileLayer = function(tileLayer) { ol.inherits(ol.renderer.canvas.TileLayer, ol.renderer.canvas.IntermediateCanvas); +/** + * @private + * @param {ol.Tile} tile Tile. + * @return {boolean} Tile is drawable. + */ +ol.renderer.canvas.TileLayer.prototype.isDrawableTile_ = function(tile) { + var tileState = tile.getState(); + var useInterimTilesOnError = this.getLayer().getUseInterimTilesOnError(); + return tileState == ol.Tile.State.LOADED || + tileState == ol.Tile.State.EMPTY || + tileState == ol.Tile.State.ERROR && !useInterimTilesOnError; +}; + /** * @inheritDoc */ @@ -123,7 +136,6 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame = function(frameState, layer var findLoadedTiles = this.createLoadedTileFinder( tileSource, projection, tilesToDrawByZ); - var useInterimTilesOnError = tileLayer.getUseInterimTilesOnError(); var tmpExtent = this.tmpExtent; var tmpTileRange = this.tmpTileRange_; var newTiles = false; @@ -131,14 +143,11 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame = function(frameState, layer for (x = tileRange.minX; x <= tileRange.maxX; ++x) { for (y = tileRange.minY; y <= tileRange.maxY; ++y) { tile = tileSource.getTile(z, x, y, pixelRatio, projection); - var tileState = tile.getState(); - var drawable = tileState == ol.Tile.State.LOADED || - tileState == ol.Tile.State.EMPTY || - tileState == ol.Tile.State.ERROR && !useInterimTilesOnError; - if (!drawable) { + if (!this.isDrawableTile_(tile)) { tile = tile.getInterimTile(); - } else { - if (tileState == ol.Tile.State.LOADED) { + } + if (this.isDrawableTile_(tile)) { + if (tile.getState() == ol.Tile.State.LOADED) { tilesToDrawByZ[z][tile.tileCoord.toString()] = tile; if (!newTiles && this.renderedTiles.indexOf(tile) == -1) { newTiles = true;