diff --git a/src/ol/renderer/canvas/canvastilelayerrenderer.js b/src/ol/renderer/canvas/canvastilelayerrenderer.js index b8c6f833bf..586a32fa96 100644 --- a/src/ol/renderer/canvas/canvastilelayerrenderer.js +++ b/src/ol/renderer/canvas/canvastilelayerrenderer.js @@ -201,6 +201,7 @@ ol.renderer.canvas.TileLayer.prototype.renderFrame = tilesToDrawByZ, getTileIfLoaded); var allTilesLoaded = true; + var tmpTileRange = new ol.TileRange(0, 0, 0, 0); var childTileRange, fullyLoaded, tile, tileState, x, y; for (x = tileRange.minX; x <= tileRange.maxX; ++x) { for (y = tileRange.minY; y <= tileRange.maxY; ++y) { @@ -216,9 +217,10 @@ ol.renderer.canvas.TileLayer.prototype.renderFrame = allTilesLoaded = false; fullyLoaded = tileGrid.forEachTileCoordParentTileRange( - tile.tileCoord, findLoadedTiles); + tile.tileCoord, findLoadedTiles, null, tmpTileRange); if (!fullyLoaded) { - childTileRange = tileGrid.getTileCoordChildTileRange(tile.tileCoord); + childTileRange = tileGrid.getTileCoordChildTileRange( + tile.tileCoord, tmpTileRange); if (!goog.isNull(childTileRange)) { findLoadedTiles(z + 1, childTileRange); } @@ -276,7 +278,7 @@ ol.renderer.canvas.TileLayer.prototype.renderFrame = context.drawImage(tile.getImage(), x, y, width, height); } interimTileRange = - tileGrid.getTileRangeForExtentAndZ(tileExtent, z); + tileGrid.getTileRangeForExtentAndZ(tileExtent, z, tmpTileRange); minX = Math.max(interimTileRange.minX, canvasTileRange.minX); maxX = Math.min(interimTileRange.maxX, canvasTileRange.maxX); minY = Math.max(interimTileRange.minY, canvasTileRange.minY); diff --git a/src/ol/renderer/dom/domtilelayerrenderer.js b/src/ol/renderer/dom/domtilelayerrenderer.js index fb7d4babbd..7deb602476 100644 --- a/src/ol/renderer/dom/domtilelayerrenderer.js +++ b/src/ol/renderer/dom/domtilelayerrenderer.js @@ -14,6 +14,7 @@ goog.require('ol.Coordinate'); goog.require('ol.Extent'); goog.require('ol.Tile'); goog.require('ol.TileCoord'); +goog.require('ol.TileRange'); goog.require('ol.TileState'); goog.require('ol.ViewHint'); goog.require('ol.dom'); @@ -115,6 +116,7 @@ ol.renderer.dom.TileLayer.prototype.renderFrame = tilesToDrawByZ, getTileIfLoaded); var allTilesLoaded = true; + var tmpTileRange = new ol.TileRange(0, 0, 0, 0); var childTileRange, fullyLoaded, tile, tileState, x, y; for (x = tileRange.minX; x <= tileRange.maxX; ++x) { for (y = tileRange.minY; y <= tileRange.maxY; ++y) { @@ -131,9 +133,10 @@ ol.renderer.dom.TileLayer.prototype.renderFrame = allTilesLoaded = false; fullyLoaded = tileGrid.forEachTileCoordParentTileRange( - tile.tileCoord, findLoadedTiles); + tile.tileCoord, findLoadedTiles, null, tmpTileRange); if (!fullyLoaded) { - childTileRange = tileGrid.getTileCoordChildTileRange(tile.tileCoord); + childTileRange = tileGrid.getTileCoordChildTileRange( + tile.tileCoord, tmpTileRange); if (!goog.isNull(childTileRange)) { findLoadedTiles(z + 1, childTileRange); } @@ -212,7 +215,7 @@ ol.renderer.dom.TileLayer.prototype.renderFrame = } else { if (!frameState.viewHints[ol.ViewHint.ANIMATING] && !frameState.viewHints[ol.ViewHint.INTERACTING]) { - tileLayerZ.removeTilesOutsideExtent(extent); + tileLayerZ.removeTilesOutsideExtent(extent, tmpTileRange); } } } @@ -351,11 +354,12 @@ ol.renderer.dom.TileLayerZ_.prototype.getResolution = function() { /** * @param {ol.Extent} extent Extent. + * @param {ol.TileRange=} opt_tileRange Temporary ol.TileRange object. */ ol.renderer.dom.TileLayerZ_.prototype.removeTilesOutsideExtent = - function(extent) { - var tileRange = - this.tileGrid_.getTileRangeForExtentAndZ(extent, this.tileCoordOrigin_.z); + function(extent, opt_tileRange) { + var tileRange = this.tileGrid_.getTileRangeForExtentAndZ( + extent, this.tileCoordOrigin_.z, opt_tileRange); var tilesToRemove = []; var tile, tileCoordKey; for (tileCoordKey in this.tiles_) { diff --git a/src/ol/renderer/webgl/webgltilelayerrenderer.js b/src/ol/renderer/webgl/webgltilelayerrenderer.js index f20a95f76b..1f22f8e2dd 100644 --- a/src/ol/renderer/webgl/webgltilelayerrenderer.js +++ b/src/ol/renderer/webgl/webgltilelayerrenderer.js @@ -199,6 +199,7 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame = tilesToDrawByZ, getTileIfLoaded); var allTilesLoaded = true; + var tmpTileRange = new ol.TileRange(0, 0, 0, 0); var childTileRange, fullyLoaded, tile, tileState, x, y; for (x = tileRange.minX; x <= tileRange.maxX; ++x) { for (y = tileRange.minY; y <= tileRange.maxY; ++y) { @@ -217,9 +218,10 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame = allTilesLoaded = false; fullyLoaded = tileGrid.forEachTileCoordParentTileRange( - tile.tileCoord, findLoadedTiles); + tile.tileCoord, findLoadedTiles, null, tmpTileRange); if (!fullyLoaded) { - childTileRange = tileGrid.getTileCoordChildTileRange(tile.tileCoord); + childTileRange = tileGrid.getTileCoordChildTileRange( + tile.tileCoord, tmpTileRange); if (!goog.isNull(childTileRange)) { findLoadedTiles(z + 1, childTileRange); }