Only request tiles within the layer extent

Layer renderers are now responsible for requesting data within a limited extent.
This commit is contained in:
Tim Schaub
2014-07-06 23:30:59 -06:00
parent 234cff4de5
commit 2b0284a342
9 changed files with 38 additions and 11 deletions
@@ -193,6 +193,11 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame =
} else {
extent = frameState.extent;
}
if (goog.isDef(layerState.extent)) {
extent = ol.extent.getIntersection(extent, layerState.extent);
}
var tileRange = tileGrid.getTileRangeForExtentAndResolution(
extent, tileResolution);
@@ -233,6 +238,11 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame =
if (z != this.renderedCanvasZ_ ||
!this.renderedCanvasTileRange_.containsTileRange(tileRange)) {
this.renderedCanvasTileRange_ = null;
// Due to limited layer extent, we may be rendering tiles on a small
// portion of the canvas.
if (z < this.renderedCanvasZ_) {
this.context_.clearRect(0, 0, canvasWidth, canvasHeight);
}
}
}
}