From 3c308af91fe8f5bce52f37bedb55b79167b564f4 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Tue, 22 Apr 2014 09:04:50 +0200 Subject: [PATCH] Merge layerFilter option into layers --- externs/olx.js | 18 +++++++---------- src/ol/interaction/selectinteraction.js | 26 +++++++++++++------------ 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index dfff423cbe..7d51dbbbfd 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -1726,8 +1726,7 @@ olx.interaction.PinchZoomOptions.prototype.duration; /** * @typedef {{addCondition: (ol.events.ConditionType|undefined), * condition: (ol.events.ConditionType|undefined), - * layerFilter: (function(ol.layer.Layer): boolean|undefined), - * layers: (Array.|undefined), + * layers: (Array.|function(ol.layer.Layer): boolean|undefined), * style: (ol.style.Style|Array.|ol.feature.StyleFunction|undefined), * removeCondition: (ol.events.ConditionType|undefined), * toggleCondition: (ol.events.ConditionType|undefined)}} @@ -1755,15 +1754,12 @@ olx.interaction.SelectOptions.prototype.condition; /** - * Filter function to restrict selection to a subset of layers. - * @type {function(ol.layer.Layer): boolean|undefined} - */ -olx.interaction.SelectOptions.prototype.layerFilter; - - -/** - * Layers. Zero or more layers from which features should be selected. - * @type {Array.|undefined} + * A list of layers from which features should be + * selected. Alternatively, a filter function can be provided. The + * function will be called for each layer in the map and should return + * `true` for layers that you want to be selectable. If the option is + * absent, all visible layers will be considered selectable. + * @type {Array.|function(ol.layer.Layer): boolean|undefined} */ olx.interaction.SelectOptions.prototype.layers; diff --git a/src/ol/interaction/selectinteraction.js b/src/ol/interaction/selectinteraction.js index 90974c1254..30bad1a3a3 100644 --- a/src/ol/interaction/selectinteraction.js +++ b/src/ol/interaction/selectinteraction.js @@ -55,18 +55,20 @@ ol.interaction.Select = function(opt_options) { options.toggleCondition : ol.events.condition.shiftKeyOnly; var layerFilter; - if (goog.isDef(options.layerFilter)) { - layerFilter = options.layerFilter; - } else if (goog.isDef(options.layers)) { - var layers = options.layers; - layerFilter = - /** - * @param {ol.layer.Layer} layer Layer. - * @return {boolean} Include. - */ - function(layer) { - return goog.array.contains(layers, layer); - }; + if (goog.isDef(options.layers)) { + if (goog.isFunction(options.layers)) { + layerFilter = options.layers; + } else { + var layers = options.layers; + layerFilter = + /** + * @param {ol.layer.Layer} layer Layer. + * @return {boolean} Include. + */ + function(layer) { + return goog.array.contains(layers, layer); + }; + } } else { layerFilter = goog.functions.TRUE; }