From d0b4967ec0595b3ece120cf31c5fd4f814c879d5 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Mon, 18 Nov 2019 08:56:20 +0100 Subject: [PATCH] Fix feature lookup after removal of alpha --- src/ol/render/canvas/hitdetect.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ol/render/canvas/hitdetect.js b/src/ol/render/canvas/hitdetect.js index c1657fbbb7..256326a952 100644 --- a/src/ol/render/canvas/hitdetect.js +++ b/src/ol/render/canvas/hitdetect.js @@ -33,10 +33,10 @@ export function createHitDetectionImageData(size, transforms, features, styleFun const renderer = new CanvasImmediateRenderer(context, 0.5, extent, null, rotation); const featureCount = features.length; // Stretch hit detection index to use the whole available color range - const indexFactor = Math.ceil((256 * 256 * 256) / featureCount); + const indexFactor = Math.ceil((256 * 256 * 256 - 1) / featureCount); const featuresByZIndex = {}; - for (let i = 0; i < featureCount; ++i) { - const feature = features[i]; + for (let i = 1; i <= featureCount; ++i) { + const feature = features[i - 1]; const featureStyleFunction = feature.getStyleFunction() || styleFunction; if (!styleFunction) { continue; @@ -141,9 +141,9 @@ export function hitDetect(pixel, features, imageData) { const g = imageData.data[index + 1]; const b = imageData.data[index + 2]; const i = b + (256 * (g + (256 * r))); - const indexFactor = Math.ceil((256 * 256 * 256) / features.length); - if (i % indexFactor === 0) { - resultFeatures.push(features[i / indexFactor]); + const indexFactor = Math.ceil((256 * 256 * 256 - 1) / features.length); + if (i && i % indexFactor === 0) { + resultFeatures.push(features[i / indexFactor - 1]); } } return resultFeatures;