From 8b0ae9e4da6fa35a24a122adf951eb07c3825d5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Thu, 3 Apr 2014 16:51:28 +0200 Subject: [PATCH] Hit detection skips layers in invisible groups --- src/ol/renderer/maprenderer.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/ol/renderer/maprenderer.js b/src/ol/renderer/maprenderer.js index 97ef132a67..6632fc3328 100644 --- a/src/ol/renderer/maprenderer.js +++ b/src/ol/renderer/maprenderer.js @@ -97,11 +97,16 @@ ol.renderer.Map.prototype.disposeInternal = function() { ol.renderer.Map.prototype.forEachFeatureAtPixel = function(coordinate, frameState, callback, thisArg, layerFilter, thisArg2) { - var layersArray = this.map_.getLayerGroup().getLayersArray(); + var obj = this.map_.getLayerGroup().getLayerStatesArray(); + var layers = obj.layers; + var layerStates = obj.layerStates; + goog.asserts.assert(layers.length == layerStates.length); + var numLayers = layers.length; var i; - for (i = layersArray.length - 1; i >= 0; --i) { - var layer = layersArray[i]; - if (layer.getVisible() && layerFilter.call(thisArg2, layer)) { + for (i = numLayers - 1; i >= 0; --i) { + var layerState = layerStates[i]; + var layer = layers[i]; + if (layerState.visible && layerFilter.call(thisArg2, layer)) { var layerRenderer = this.getLayerRenderer(layer); var result = layerRenderer.forEachFeatureAtPixel( coordinate, frameState, callback, thisArg);