From 970265acb002f19592e33b9d1ed9900dc571c9d4 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Thu, 29 Jun 2017 00:02:24 +0200 Subject: [PATCH] Give preloaded lower resolution tiles a chance to display immediately --- src/ol/renderer/canvas/tilelayer.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/ol/renderer/canvas/tilelayer.js b/src/ol/renderer/canvas/tilelayer.js index 2f3695d510..2fb975e72c 100644 --- a/src/ol/renderer/canvas/tilelayer.js +++ b/src/ol/renderer/canvas/tilelayer.js @@ -144,9 +144,14 @@ 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); - // When useInterimTilesOnError is false, we consider the error tile as loaded. - if (tile.getState() == ol.TileState.ERROR && !this.getLayer().getUseInterimTilesOnError()) { - tile.setState(ol.TileState.LOADED); + if (tile.getState() == ol.TileState.ERROR) { + if (!tileLayer.getUseInterimTilesOnError()) { + // When useInterimTilesOnError is false, we consider the error tile as loaded. + tile.setState(ol.TileState.LOADED); + } else if (tileLayer.getPreload() > 0) { + // Preloaded tiles for lower resolutions might have finished loading. + newTiles = true; + } } if (!this.isDrawableTile_(tile)) { tile = tile.getInterimTile();