From a92bc2755de21ac5ced48c86b47546662c07e3e3 Mon Sep 17 00:00:00 2001 From: Mathias Boeck Date: Thu, 12 Nov 2020 11:43:33 +0100 Subject: [PATCH] Check if render pixel is in the layer extent --- src/ol/renderer/canvas/Layer.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/ol/renderer/canvas/Layer.js b/src/ol/renderer/canvas/Layer.js index 346e4b853e..d349baea1c 100644 --- a/src/ol/renderer/canvas/Layer.js +++ b/src/ol/renderer/canvas/Layer.js @@ -9,13 +9,14 @@ import { compose as composeTransform, create as createTransform, } from '../../transform.js'; -import {createCanvasContext2D} from '../../dom.js'; import { + containsCoordinate, getBottomLeft, getBottomRight, getTopLeft, getTopRight, } from '../../extent.js'; +import {createCanvasContext2D} from '../../dom.js'; import {rotateAtOffset} from '../../render/canvas.js'; /** @@ -284,6 +285,20 @@ class CanvasLayerRenderer extends LayerRenderer { ); const context = this.context; + const layer = this.getLayer(); + const layerExtent = layer.getExtent(); + if (layerExtent) { + const renderCoordinate = applyTransform( + frameState.pixelToCoordinateTransform, + pixel.slice() + ); + + /** get only data inside of the layer extent */ + if (!containsCoordinate(layerExtent, renderCoordinate)) { + return null; + } + } + let data; try { const x = Math.round(renderPixel[0]);