Report all features being modified
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user