From 5bc00d85351c084055758f92fa2da95cdb2f1f08 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Wed, 17 Feb 2016 08:16:21 +0100 Subject: [PATCH] Continue passing null instead of unmanaged layer to forEachFeatureAtCoordinate --- src/ol/map.js | 5 +++-- src/ol/renderer/maprenderer.js | 6 +++--- test/spec/ol/renderer/canvas/canvasmaprenderer.test.js | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/ol/map.js b/src/ol/map.js index 2c0a2a58bf..ae2e6586f6 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -604,8 +604,9 @@ ol.Map.prototype.disposeInternal = function() { * called with two arguments. The first argument is one * {@link ol.Feature feature} or * {@link ol.render.Feature render feature} at the pixel, the second is - * the {@link ol.layer.Layer layer} of the feature. To stop detection, - * callback functions can return a truthy value. + * the {@link ol.layer.Layer layer} of the feature and will be null for + * unmanaged layers. To stop detection, callback functions can return a + * truthy value. * @param {S=} opt_this Value to use as `this` when executing `callback`. * @param {(function(this: U, ol.layer.Layer): boolean)=} opt_layerFilter Layer * filter function. The filter function will receive one argument, the diff --git a/src/ol/renderer/maprenderer.js b/src/ol/renderer/maprenderer.js index aa3c8f82c9..a716b2166c 100644 --- a/src/ol/renderer/maprenderer.js +++ b/src/ol/renderer/maprenderer.js @@ -139,9 +139,9 @@ ol.renderer.Map.prototype.forEachFeatureAtCoordinate = function(coordinate, fram function forEachFeatureAtCoordinate(feature, layer) { goog.asserts.assert(feature !== undefined, 'received a feature'); var key = goog.getUid(feature).toString(); - if (!(key in frameState.skippedFeatureUids && - !frameState.layerStates[goog.getUid(layer)].managed)) { - return callback.call(thisArg, feature, layer); + var managed = frameState.layerStates[goog.getUid(layer)].managed; + if (!(key in frameState.skippedFeatureUids && !managed)) { + return callback.call(thisArg, feature, managed ? layer : null); } } diff --git a/test/spec/ol/renderer/canvas/canvasmaprenderer.test.js b/test/spec/ol/renderer/canvas/canvasmaprenderer.test.js index 7c35c27462..fdb20ca524 100644 --- a/test/spec/ol/renderer/canvas/canvasmaprenderer.test.js +++ b/test/spec/ol/renderer/canvas/canvasmaprenderer.test.js @@ -55,13 +55,13 @@ describe('ol.renderer.canvas.Map', function() { expect(cb.firstCall.args[1]).to.be(layer); }); - it('calls callback for unmanaged layers', function() { + it('calls callback with null for unmanaged layers', function() { layer.setMap(map); map.renderSync(); var cb = sinon.spy(); map.forEachFeatureAtPixel(map.getPixelFromCoordinate([0, 0]), cb); expect(cb).to.be.called(); - expect(cb.firstCall.args[1]).to.be(layer); + expect(cb.firstCall.args[1]).to.be(null); }); it('calls callback with main layer when skipped feature on unmanaged layer', function() {