Clip tile layers by extent
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user