Call setRenderIntent on the feature, not the layer

This commit is contained in:
ahocevar
2013-11-08 17:35:59 +01:00
parent d2281c4868
commit 7cf636147b
3 changed files with 46 additions and 46 deletions

View File

@@ -119,10 +119,8 @@ ol.interaction.Select.prototype.select =
}
var selectedFeatures, unselectedFeatures;
if (goog.isFunction(layer.setRenderIntent)) {
selectedFeatures = [];
unselectedFeatures = [];
}
selectedFeatures = [];
unselectedFeatures = [];
var features = featuresByLayer[i];
var numFeatures = features.length;
var featuresToAdd = [];
@@ -131,9 +129,7 @@ ol.interaction.Select.prototype.select =
var oldFeatureMap = featureMap;
if (clear) {
for (var f in featureMap) {
if (goog.isDef(unselectedFeatures)) {
unselectedFeatures.push(layer.getFeatureWithUid(f));
}
unselectedFeatures.push(layer.getFeatureWithUid(f));
featuresToRemove.push(featureMap[f]);
}
featureMap = {};
@@ -145,9 +141,7 @@ ol.interaction.Select.prototype.select =
var clone = featureMap[featureId];
if (clone) {
// TODO: make toggle configurable
if (goog.isDef(unselectedFeatures)) {
unselectedFeatures.push(feature);
}
unselectedFeatures.push(feature);
delete featureMap[featureId];
featuresToRemove.push(clone);
} else if (!(featureId in oldFeatureMap)) {
@@ -157,17 +151,17 @@ ol.interaction.Select.prototype.select =
clone.setSymbolizers(feature.getSymbolizers());
clone.renderIntent = ol.layer.VectorLayerRenderIntent.SELECTED;
featureMap[featureId] = clone;
if (goog.isDef(selectedFeatures)) {
selectedFeatures.push(feature);
}
selectedFeatures.push(feature);
featuresToAdd.push(clone);
}
}
if (goog.isFunction(layer.setRenderIntent)) {
layer.setRenderIntent(ol.layer.VectorLayerRenderIntent.HIDDEN,
selectedFeatures);
layer.setRenderIntent(ol.layer.VectorLayerRenderIntent.DEFAULT,
unselectedFeatures);
for (var j = selectedFeatures.length - 1; j >= 0; --j) {
selectedFeatures[j].setRenderIntent(
ol.layer.VectorLayerRenderIntent.HIDDEN);
}
for (var j = unselectedFeatures.length - 1; j >= 0; --j) {
unselectedFeatures[j].setRenderIntent(
ol.layer.VectorLayerRenderIntent.DEFAULT);
}
selectionLayer.removeFeatures(featuresToRemove);
selectionLayer.addFeatures(featuresToAdd);