diff --git a/src/ol/interaction/DragAndDrop.js b/src/ol/interaction/DragAndDrop.js index 3736e8c633..e1e839c308 100644 --- a/src/ol/interaction/DragAndDrop.js +++ b/src/ol/interaction/DragAndDrop.js @@ -140,28 +140,27 @@ class DragAndDrop extends Interaction { } const formatConstructors = this.formatConstructors_; - let features = []; for (let i = 0, ii = formatConstructors.length; i < ii; ++i) { const format = new formatConstructors[i](); - features = this.tryReadFeatures_(format, result, { + const features = this.tryReadFeatures_(format, result, { featureProjection: projection, }); if (features && features.length > 0) { + if (this.source_) { + this.source_.clear(); + this.source_.addFeatures(features); + } + this.dispatchEvent( + new DragAndDropEvent( + DragAndDropEventType.ADD_FEATURES, + file, + features, + projection + ) + ); break; } } - if (this.source_) { - this.source_.clear(); - this.source_.addFeatures(features); - } - this.dispatchEvent( - new DragAndDropEvent( - DragAndDropEventType.ADD_FEATURES, - file, - features, - projection - ) - ); } /** @@ -215,11 +214,14 @@ class DragAndDrop extends Interaction { * @param {string} text Text. * @param {import("../format/Feature.js").ReadOptions} options Read options. * @private - * @return {Array} Features. + * @return {Array} Features. */ tryReadFeatures_(format, text, options) { try { - return format.readFeatures(text, options); + return ( + /** @type {Array} */ + (format.readFeatures(text, options)) + ); } catch (e) { return null; }