Report all features being modified

This commit is contained in:
Andreas Hocevar
2021-02-08 19:08:04 +01:00
parent 8616aa9320
commit 7789bc5b15
2 changed files with 15 additions and 4 deletions

View File

@@ -427,9 +427,12 @@ class Modify extends PointerInteraction {
this.featuresBeingModified_ = new Collection(); this.featuresBeingModified_ = new Collection();
const features = this.featuresBeingModified_.getArray(); const features = this.featuresBeingModified_.getArray();
for (let i = 0, ii = segments.length; i < ii; ++i) { for (let i = 0, ii = segments.length; i < ii; ++i) {
const feature = segments[i][0].feature; const segment = segments[i];
if (features.indexOf(feature) === -1) { for (let s = 0, ss = segment.length; s < ss; ++s) {
this.featuresBeingModified_.push(feature); const feature = segment[s].feature;
if (feature && features.indexOf(feature) === -1) {
this.featuresBeingModified_.push(feature);
}
} }
} }

View File

@@ -142,7 +142,7 @@ describe('ol.interaction.Modify', function () {
const startevent = events[0]; const startevent = events[0];
const endevent = events[events.length - 1]; const endevent = events[events.length - 1];
// first event should be modifystary // first event should be modifystart
expect(startevent).to.be.a(ModifyEvent); expect(startevent).to.be.a(ModifyEvent);
expect(startevent.type).to.eql('modifystart'); expect(startevent.type).to.eql('modifystart');
@@ -463,15 +463,23 @@ describe('ol.interaction.Modify', function () {
const modify = new Modify({ const modify = new Modify({
features: new Collection(features), features: new Collection(features),
}); });
let modifiedFeatures;
const onModifyStart = function (evt) {
modifiedFeatures = evt.features;
};
map.addInteraction(modify); map.addInteraction(modify);
modify.on('modifystart', onModifyStart);
// Click on line // Click on line
simulateEvent('pointermove', 0, 0, null, 0); simulateEvent('pointermove', 0, 0, null, 0);
simulateEvent('pointerdown', 0, 0, null, 0); simulateEvent('pointerdown', 0, 0, null, 0);
simulateEvent('pointerup', 0, 0, null, 0); simulateEvent('pointerup', 0, 0, null, 0);
modify.un('modifystart', onModifyStart);
expect(lineFeature1.getGeometry().getCoordinates().length).to.be(4); expect(lineFeature1.getGeometry().getCoordinates().length).to.be(4);
expect(lineFeature2.getGeometry().getCoordinates().length).to.be(4); expect(lineFeature2.getGeometry().getCoordinates().length).to.be(4);
expect(modifiedFeatures.getArray()).to.eql([lineFeature1, lineFeature2]);
}); });
}); });