From 2c7282d4e9da2680d7f5079b4d686d63756dafe8 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Thu, 17 Apr 2014 09:27:46 +0200 Subject: [PATCH 1/2] Remove layer option from ol.interaction.Select Fixes #1991 --- externs/olx.js | 8 -------- src/ol/interaction/selectinteraction.js | 10 ---------- 2 files changed, 18 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index af2312a837..dfff423cbe 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -1727,7 +1727,6 @@ olx.interaction.PinchZoomOptions.prototype.duration; * @typedef {{addCondition: (ol.events.ConditionType|undefined), * condition: (ol.events.ConditionType|undefined), * layerFilter: (function(ol.layer.Layer): boolean|undefined), - * layer: (ol.layer.Layer|undefined), * layers: (Array.|undefined), * style: (ol.style.Style|Array.|ol.feature.StyleFunction|undefined), * removeCondition: (ol.events.ConditionType|undefined), @@ -1762,13 +1761,6 @@ olx.interaction.SelectOptions.prototype.condition; olx.interaction.SelectOptions.prototype.layerFilter; -/** - * Layer. The single layer from which features should be selected. - * @type {ol.layer.Layer|undefined} - */ -olx.interaction.SelectOptions.prototype.layer; - - /** * Layers. Zero or more layers from which features should be selected. * @type {Array.|undefined} diff --git a/src/ol/interaction/selectinteraction.js b/src/ol/interaction/selectinteraction.js index 181b912869..90974c1254 100644 --- a/src/ol/interaction/selectinteraction.js +++ b/src/ol/interaction/selectinteraction.js @@ -57,16 +57,6 @@ ol.interaction.Select = function(opt_options) { var layerFilter; if (goog.isDef(options.layerFilter)) { layerFilter = options.layerFilter; - } else if (goog.isDef(options.layer)) { - var layer = options.layer; - layerFilter = - /** - * @param {ol.layer.Layer} l Layer. - * @return {boolean} Include. - */ - function(l) { - return l === layer; - }; } else if (goog.isDef(options.layers)) { var layers = options.layers; layerFilter = From 3c308af91fe8f5bce52f37bedb55b79167b564f4 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Tue, 22 Apr 2014 09:04:50 +0200 Subject: [PATCH 2/2] 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; }