when i modify one feature, Modify interaction "modifyend" event
return all feature in source, not only the modifyed feature.
https://codepen.io/anon/pen/qVdEdo
var modify = new ol.interaction.Modify({
source: vector.getSource()
});
modify.on('modifyend',function(evt){
console.log(evt.features.getArray().length);
})

it's difficult to get modifyed feature in 179 features
no get modifyed feature method in api
http://openlayers.org/en/latest/apidoc/ol.interaction.Modify.html
i find another way to get modify feature on modifyend,this issue can close
set every feature on('change') event at modifystart
https://github.com/openlayers/openlayers/blob/f6eeee37d2e4b13f9ff65acb6b671d9d4c35b505/src/ol/interaction/modify.js#L258
will trigger change event
set every feature un('change') event at modifyent
but
1.there is API 'change:geometry' in ol.Feature, modify not fire 'change:geometry'
https://openlayers.org/en/latest/apidoc/ol.Feature.html
2.modifystart still can't get current modify feature
Yes, return all the features is strange, I have the same problem !
Please re-open this issue. This issue still exists, and the Feature.on('change') workaround suggested is ugly.
here is an example.
let modifyedFeatures = [];
let geometryChangeListener;
modifyInteraction.on('modifystart', (e) => {
modifyedFeatures.length = 0;
const features = e.features;
features.forEach((feature) => {
geometryChangeListener = feature.getGeometry().on('change', () => {
if(modifyedFeatures.indexOf(feature) === -1){
modifyedFeatures.push(feature);
}
});
});
});
modifyInteraction.on('modifyend', () => {
if (geometryChangeListener) {
unByKey(geometryChangeListener);
geometryChangeListener = null;
}
console.log(modifyedFeatures.length);
});
Most helpful comment
here is an example.
let modifyedFeatures = [];
let geometryChangeListener;
modifyInteraction.on('modifystart', (e) => {
modifyedFeatures.length = 0;
const features = e.features;
features.forEach((feature) => {
geometryChangeListener = feature.getGeometry().on('change', () => {
if(modifyedFeatures.indexOf(feature) === -1){
modifyedFeatures.push(feature);
}
});
});
});
modifyInteraction.on('modifyend', () => {
if (geometryChangeListener) {
unByKey(geometryChangeListener);
geometryChangeListener = null;
}
console.log(modifyedFeatures.length);
});