diff --git a/src/ol/map.js b/src/ol/map.js index c616c64669..ca1d36b2e3 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -77,6 +77,12 @@ ol.ENABLE_DOM = true; ol.ENABLE_WEBGL = true; +/** + * @define {number} Maximum new tile loads per frame. + */ +ol.MAXIMUM_NEW_TILE_LOADS_PER_FRAME = 2; + + /** * @enum {string} */ @@ -556,7 +562,7 @@ ol.Map.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { */ ol.Map.prototype.handlePostRender = function() { this.tileQueue_.reprioritize(); // FIXME only call if needed - this.tileQueue_.loadMoreTiles(); + this.tileQueue_.loadMoreTiles(ol.MAXIMUM_NEW_TILE_LOADS_PER_FRAME); var postRenderFunctions = this.postRenderFunctions_; var i; diff --git a/src/ol/tilequeue.js b/src/ol/tilequeue.js index 4d21f2ef44..43c25f85cb 100644 --- a/src/ol/tilequeue.js +++ b/src/ol/tilequeue.js @@ -74,15 +74,18 @@ ol.TileQueue.prototype.handleTileChange = function() { /** - * FIXME empty description for jsdoc + * @param {number} limit Maximum number of new tiles to load. */ -ol.TileQueue.prototype.loadMoreTiles = function() { +ol.TileQueue.prototype.loadMoreTiles = function(limit) { var tile; - while (!this.isEmpty() && this.tilesLoading_ < this.maxTilesLoading_) { + while (limit > 0 && + !this.isEmpty() && + this.tilesLoading_ < this.maxTilesLoading_) { tile = /** @type {ol.Tile} */ (this.dequeue()[0]); goog.events.listenOnce(tile, goog.events.EventType.CHANGE, this.handleTileChange, false, this); tile.load(); ++this.tilesLoading_; + --limit; } };