Clip tile layers by extent

This commit is contained in:
Tim Schaub
2018-11-16 12:34:09 +01:00
parent 73ffda10db
commit 038f122d11
6 changed files with 82 additions and 50 deletions

View File

@@ -143,12 +143,10 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
const tileResolution = tileGrid.getResolution(z);
let extent = frameState.extent;
if (layerState.extent !== undefined) {
if (layerState.extent) {
extent = getIntersection(extent, layerState.extent);
}
// TODO: clip by layer extent
const tilePixelRatio = tileSource.getTilePixelRatio(pixelRatio);
// desired dimensions of the canvas in pixels
@@ -235,6 +233,10 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
context.clearRect(0, 0, width, height);
}
if (layerState.extent) {
this.clipUnrotated(context, frameState, layerState.extent);
}
this.preRender(context, frameState, pixelTransform);
this.renderedTiles.length = 0;
@@ -285,6 +287,10 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
this.postRender(context, frameState, pixelTransform);
if (layerState.extent) {
context.restore();
}
const opacity = layerState.opacity;
if (opacity !== canvas.style.opacity) {
canvas.style.opacity = opacity;