Merge pull request #1273 from tschaub/select-layers
Rename layerFilter option to layers and accept array for select interaction.
This commit is contained in:
@@ -92,13 +92,14 @@ var vector = new ol.layer.Vector({
|
||||
})
|
||||
});
|
||||
|
||||
var selectInteraction = new ol.interaction.Select({
|
||||
layerFilter: function(layer) { return layer.get('id') == 'vector'; }
|
||||
var select = new ol.interaction.Select({
|
||||
layers: [vector]
|
||||
});
|
||||
|
||||
var modify = new ol.interaction.Modify();
|
||||
|
||||
var map = new ol.Map({
|
||||
interactions: ol.interaction.defaults().extend(
|
||||
[selectInteraction, new ol.interaction.Modify()]),
|
||||
interactions: ol.interaction.defaults().extend([select, modify]),
|
||||
layers: [raster, vector],
|
||||
renderer: ol.RendererHint.CANVAS,
|
||||
target: 'map',
|
||||
|
||||
@@ -47,12 +47,12 @@ var vector = new ol.layer.Vector({
|
||||
})
|
||||
});
|
||||
|
||||
var selectInteraction = new ol.interaction.Select({
|
||||
layerFilter: function(layer) { return layer.get('id') == 'vector'; }
|
||||
var select = new ol.interaction.Select({
|
||||
layers: [vector]
|
||||
});
|
||||
|
||||
var map = new ol.Map({
|
||||
interactions: ol.interaction.defaults().extend([selectInteraction]),
|
||||
interactions: ol.interaction.defaults().extend([select]),
|
||||
layers: [raster, vector],
|
||||
renderer: ol.RendererHint.CANVAS,
|
||||
target: 'map',
|
||||
|
||||
@@ -395,8 +395,8 @@
|
||||
* modifier (e.g. shift key) that determines if the interaction is active
|
||||
* (i.e. selection occurs) or not. By default, a click with no modifier keys
|
||||
* toggles the selection.
|
||||
* @property {undefined|function(ol.layer.Layer):boolean} layerFilter Filter
|
||||
* function to restrict selection to a subset of layers.
|
||||
* @property {undefined|Array.<ol.layer.Layer>|function(ol.layer.Layer):boolean} layers
|
||||
* Layers or filter function to restrict selection to a subset of layers.
|
||||
* @todo stability experimental
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
goog.provide('ol.interaction.Select');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.events.ConditionType');
|
||||
goog.require('ol.events.condition');
|
||||
@@ -34,12 +35,19 @@ ol.interaction.Select = function(opt_options) {
|
||||
this.addCondition_ = goog.isDef(options.addCondition) ?
|
||||
options.addCondition : ol.events.condition.shiftKeyOnly;
|
||||
|
||||
var layerFilter = options.layers;
|
||||
if (!goog.isDef(layerFilter)) {
|
||||
layerFilter = goog.functions.TRUE;
|
||||
} else if (goog.isArray(layerFilter)) {
|
||||
layerFilter = function(layer) {return options.layers.indexOf(layer) > -1;};
|
||||
}
|
||||
goog.asserts.assertFunction(layerFilter);
|
||||
|
||||
/**
|
||||
* @type {null|function(ol.layer.Layer):boolean}
|
||||
* @type {function(ol.layer.Layer):boolean}
|
||||
* @private
|
||||
*/
|
||||
this.layerFilter_ = goog.isDef(options.layerFilter) ?
|
||||
options.layerFilter : null;
|
||||
this.layerFilter_ = layerFilter;
|
||||
|
||||
goog.base(this);
|
||||
};
|
||||
@@ -53,10 +61,8 @@ ol.interaction.Select.prototype.handleMapBrowserEvent =
|
||||
function(mapBrowserEvent) {
|
||||
if (this.condition_(mapBrowserEvent)) {
|
||||
var map = mapBrowserEvent.map;
|
||||
var layers = map.getLayerGroup().getLayersArray();
|
||||
if (!goog.isNull(this.layerFilter_)) {
|
||||
layers = goog.array.filter(layers, this.layerFilter_);
|
||||
}
|
||||
var layers = goog.array.filter(
|
||||
map.getLayerGroup().getLayersArray(), this.layerFilter_);
|
||||
var clear = !this.addCondition_(mapBrowserEvent);
|
||||
|
||||
var that = this;
|
||||
|
||||
@@ -30,7 +30,7 @@ describe('ol.interaction.Select', function() {
|
||||
vector = new ol.layer.Vector({source: new ol.source.Vector({})});
|
||||
vector.addFeatures(features);
|
||||
select = new ol.interaction.Select({
|
||||
layerFilter: function(layer) { return layer === vector; }
|
||||
layers: [vector]
|
||||
});
|
||||
map.getInteractions().push(select);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user