From dde6d6559c6166a5ea712ce52c027297d889ab47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Kr=C3=B6g?= Date: Wed, 10 Feb 2021 21:26:53 +0100 Subject: [PATCH] Reduce work for hitdetection Skip cloning of style if geometry is not in extent. --- src/ol/render/canvas/hitdetect.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/ol/render/canvas/hitdetect.js b/src/ol/render/canvas/hitdetect.js index c8d702874f..d32acc468c 100644 --- a/src/ol/render/canvas/hitdetect.js +++ b/src/ol/render/canvas/hitdetect.js @@ -69,6 +69,10 @@ export function createHitDetectionImageData( const color = '#' + ('000000' + index.toString(16)).slice(-6); for (let j = 0, jj = styles.length; j < jj; ++j) { const originalStyle = styles[j]; + const geometry = originalStyle.getGeometryFunction()(feature); + if (!geometry || !intersects(extent, geometry.getExtent())) { + continue; + } const style = originalStyle.clone(); const fill = style.getFill(); if (fill) { @@ -119,13 +123,10 @@ export function createHitDetectionImageData( byGeometryType[GeometryType.LINE_STRING] = []; byGeometryType[GeometryType.POINT] = []; } - const geometry = style.getGeometryFunction()(feature); - if (geometry && intersects(extent, geometry.getExtent())) { - byGeometryType[geometry.getType().replace('Multi', '')].push( - geometry, - style - ); - } + byGeometryType[geometry.getType().replace('Multi', '')].push( + geometry, + style + ); } }