diff --git a/src/ol/renderer/dom/dommaprenderer.js b/src/ol/renderer/dom/dommaprenderer.js index e14abf983d..108f8a2cb9 100644 --- a/src/ol/renderer/dom/dommaprenderer.js +++ b/src/ol/renderer/dom/dommaprenderer.js @@ -135,11 +135,7 @@ ol.renderer.dom.Map.prototype.createLayerRenderer = function(layer) { */ ol.renderer.dom.Map.prototype.handleCenterChanged = function() { goog.base(this, 'handleCenterChanged'); - var map = this.getMap(); - if (!map.isDef()) { - return; - } - map.render(); + this.getMap().render(); }; @@ -148,11 +144,7 @@ ol.renderer.dom.Map.prototype.handleCenterChanged = function() { */ ol.renderer.dom.Map.prototype.handleResolutionChanged = function() { goog.base(this, 'handleResolutionChanged'); - var map = this.getMap(); - if (!map.isDef()) { - return; - } - map.render(); + this.getMap().render(); }; @@ -160,11 +152,8 @@ ol.renderer.dom.Map.prototype.handleResolutionChanged = function() { * @inheritDoc */ ol.renderer.dom.Map.prototype.handleRotationChanged = function() { - var map = this.getMap(); - if (!map.isDef()) { - return; - } - map.render(); + goog.base(this, 'handleRotationChanged'); + this.getMap().render(); }; @@ -173,11 +162,7 @@ ol.renderer.dom.Map.prototype.handleRotationChanged = function() { */ ol.renderer.dom.Map.prototype.handleSizeChanged = function() { goog.base(this, 'handleSizeChanged'); - var map = this.getMap(); - if (!map.isDef()) { - return; - } - map.render(); + this.getMap().render(); }; @@ -227,14 +212,16 @@ ol.renderer.dom.Map.prototype.renderFrame = function(time) { this.renderedRotation_ = mapRotation; this.renderedSize_ = mapSize; - var animate = false; + var requestRenderFrame = false; this.forEachReadyVisibleLayer(function(layer, layerRenderer) { if (layerRenderer.renderFrame(time)) { - animate = true; + requestRenderFrame = true; } }); - return animate; + if (requestRenderFrame) { + map.requestRenderFrame(); + } }; diff --git a/src/ol/renderer/dom/domtilelayerrenderer.js b/src/ol/renderer/dom/domtilelayerrenderer.js index 68fac4cec6..e753a6020c 100644 --- a/src/ol/renderer/dom/domtilelayerrenderer.js +++ b/src/ol/renderer/dom/domtilelayerrenderer.js @@ -86,16 +86,6 @@ ol.renderer.dom.TileLayer.prototype.removeExtraTiles_ = }; -/** - * @param {goog.events.Event} event Tile change event. - * @private - */ -ol.renderer.dom.TileLayer.prototype.handleTileChange_ = function(event) { - goog.asserts.assert(event.target.getState() == ol.TileState.LOADED); - this.getMap().render(); -}; - - /** * @inheritDoc */ @@ -125,6 +115,7 @@ ol.renderer.dom.TileLayer.prototype.renderFrame = function(time) { var tileRange = tileGrid.getTileRangeForExtentAndResolution(mapExtent, mapResolution); + var allTilesLoaded = true; // first pass through the tile range to determine all the tiles needed tileRange.forEachTileCoord(z, function(tileCoord) { @@ -136,17 +127,15 @@ ol.renderer.dom.TileLayer.prototype.renderFrame = function(time) { var key = tile.tileCoord.toString(); var state = tile.getState(); - if (state == ol.TileState.LOADED) { + if (state == ol.TileState.IDLE) { + tile.load(); + } else if (state == ol.TileState.LOADED) { tilesToDrawByZ[z][key] = tile; return; - } else { - if (state != ol.TileState.LOADING) { - goog.events.listen(tile, goog.events.EventType.CHANGE, - this.handleTileChange_, false, this); - tile.load(); - } } + allTilesLoaded = false; + /** * Look for already loaded tiles at alternate z that can serve as * placeholders until tiles at the current z have loaded. @@ -233,4 +222,6 @@ ol.renderer.dom.TileLayer.prototype.renderFrame = function(time) { this.renderedMapResolution_ = mapResolution; this.removeExtraTiles_(tilesToDrawByZ); + + return !allTilesLoaded; };