Fix feature-layer association on replaced selections
This commit is contained in:
@@ -280,6 +280,7 @@ ol.interaction.Select.handleEvent = function(mapBrowserEvent) {
|
||||
// Replace the currently selected feature(s) with the feature(s) at the
|
||||
// pixel, or clear the selected feature(s) if there is no feature at
|
||||
// the pixel.
|
||||
ol.object.clear(this.featureLayerAssociation_);
|
||||
map.forEachFeatureAtPixel(mapBrowserEvent.pixel,
|
||||
/**
|
||||
* @param {ol.Feature|ol.render.Feature} feature Feature.
|
||||
@@ -303,16 +304,6 @@ ol.interaction.Select.handleEvent = function(mapBrowserEvent) {
|
||||
features.clear();
|
||||
}
|
||||
features.extend(selected);
|
||||
// Modify object this.featureLayerAssociation_
|
||||
if (selected.length === 0) {
|
||||
ol.object.clear(this.featureLayerAssociation_);
|
||||
} else {
|
||||
if (deselected.length > 0) {
|
||||
deselected.forEach(function(feature) {
|
||||
this.removeFeatureLayerAssociation_(feature);
|
||||
}, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Modify the currently selected feature(s).
|
||||
|
||||
@@ -181,6 +181,16 @@ describe('ol.interaction.Select', function() {
|
||||
|
||||
var features = select.getFeatures();
|
||||
expect(features.getLength()).to.equal(4);
|
||||
expect(select.getLayer(features.item(0))).to.equal(layer);
|
||||
|
||||
// Select again to make sure the internal layer isn't reported
|
||||
simulateEvent(ol.MapBrowserEvent.EventType.SINGLECLICK, 10, -20);
|
||||
|
||||
expect(listenerSpy.callCount).to.be(2);
|
||||
|
||||
features = select.getFeatures();
|
||||
expect(features.getLength()).to.equal(4);
|
||||
expect(select.getLayer(features.item(0))).to.equal(layer);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -312,6 +322,8 @@ describe('ol.interaction.Select', function() {
|
||||
interaction.on('select', listenerSpy);
|
||||
|
||||
simulateEvent(ol.MapBrowserEvent.EventType.SINGLECLICK, 10, -20);
|
||||
// Select again to make sure that the internal layer doesn't get reported.
|
||||
simulateEvent(ol.MapBrowserEvent.EventType.SINGLECLICK, 10, -20);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user