diff --git a/src/ol/Tile.js b/src/ol/Tile.js index c8d0738661..0680e49eae 100644 --- a/src/ol/Tile.js +++ b/src/ol/Tile.js @@ -170,6 +170,9 @@ class Tile extends EventTarget { // cleaned up by refreshInterimChain) do { if (tile.getState() == TileState.LOADED) { + // Show tile immediately instead of fading it in after loading, because + // the interim tile is in place already + this.transition_ = 0; return tile; } tile = tile.interimTile; diff --git a/test/spec/ol/renderer/canvas/tilelayer.test.js b/test/spec/ol/renderer/canvas/tilelayer.test.js index 1f64fcab43..0df07563a5 100644 --- a/test/spec/ol/renderer/canvas/tilelayer.test.js +++ b/test/spec/ol/renderer/canvas/tilelayer.test.js @@ -41,13 +41,18 @@ describe('ol.renderer.canvas.TileLayer', function() { document.body.removeChild(target); }); - it('properly handles interim tiles', function() { + it('properly handles interim tiles', function(done) { const layer = map.getLayers().item(0); + source.once('tileloadend', function(e) { + expect(e.tile.inTransition()).to.be(false); + done(); + }); source.updateParams({TIME: '1'}); map.renderSync(); const tiles = map.getRenderer().getLayerRenderer(layer).renderedTiles; expect(tiles.length).to.be(1); expect(tiles[0]).to.equal(tile); + expect(tile.inTransition()).to.be(true); }); });