diff --git a/externs/olx.js b/externs/olx.js index 8b073ba63a..d8ba2cbfbd 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -1160,7 +1160,7 @@ olx.format.ReadOptions.prototype.dataProjection; /** - * Projection of the feature geometries created by the format reader. if not + * Projection of the feature geometries created by the format reader. If not * provided, features will be returned in the `dataProjection`. * @type {ol.proj.ProjectionLike|undefined} */ diff --git a/src/ol/format/featureformat.js b/src/ol/format/featureformat.js index ff674c19c7..0627c4b90c 100644 --- a/src/ol/format/featureformat.js +++ b/src/ol/format/featureformat.js @@ -149,21 +149,22 @@ ol.format.Feature.transformWithOptions = function( /** - * @param {(olx.format.WriteOptions|olx.format.ReadOptions)=} opt_options + * @param {olx.format.WriteOptions|olx.format.ReadOptions|undefined} options * Options. * @param {ol.proj.ProjectionLike} defaultDataProjection Default projection. * @protected - * @return {(olx.format.WriteOptions|olx.format.ReadOptions)=} Updated options. + * @return {olx.format.WriteOptions|olx.format.ReadOptions|undefined} + * Updated options. */ ol.format.Feature.setDefaultDataProjection = function( - opt_options, defaultDataProjection) { - if (goog.isDef(opt_options)) { - if (!goog.isDef(opt_options.dataProjection)) { - opt_options = { - featureProjection: opt_options.featureProjection, + options, defaultDataProjection) { + if (goog.isDef(options)) { + if (!goog.isDef(options.dataProjection)) { + options = { + featureProjection: options.featureProjection, dataProjection: defaultDataProjection }; } } - return opt_options; + return options; }; diff --git a/src/ol/format/polylineformat.js b/src/ol/format/polylineformat.js index 750f1aa078..85b357c094 100644 --- a/src/ol/format/polylineformat.js +++ b/src/ol/format/polylineformat.js @@ -311,7 +311,7 @@ ol.format.Polyline.prototype.readGeometryFromText = // for convenience set a default dataProjection opt_options = ol.format.Feature.setDefaultDataProjection( - opt_options, this.readProjectionFromText(null)); + opt_options, this.readProjectionFromText('')); return ol.format.Feature.transformWithOptions( new ol.geom.LineString(coordinates), false, false, opt_options); @@ -381,9 +381,10 @@ ol.format.Polyline.prototype.writeGeometryText = goog.asserts.assertInstanceof(geometry, ol.geom.LineString); // for convenience set a default dataProjection opt_options = ol.format.Feature.setDefaultDataProjection( - opt_options, this.readProjectionFromText(null)); - geometry = ol.format.Feature.transformWithOptions( - geometry, true, true, opt_options); + opt_options, this.readProjectionFromText('')); + geometry = /** @type {ol.geom.LineString} */ + (ol.format.Feature.transformWithOptions( + geometry, true, true, opt_options)); var flatCoordinates = geometry.getFlatCoordinates(); var stride = geometry.getStride(); return ol.format.Polyline.encodeDeltas(flatCoordinates, stride, this.factor_); diff --git a/src/ol/format/xmlfeatureformat.js b/src/ol/format/xmlfeatureformat.js index dc185b74df..d6c23aaeb0 100644 --- a/src/ol/format/xmlfeatureformat.js +++ b/src/ol/format/xmlfeatureformat.js @@ -271,8 +271,11 @@ ol.format.XMLFeature.transformFeaturesWithOptions = function( } goog.array.forEach(features, function(feature) { - feature.setGeometry(ol.format.Feature.transformWithOptions( - feature.getGeometry(), write, false, opt_options)); + var geom = feature.getGeometry(); + if (goog.isDef(geom)) { + feature.setGeometry(ol.format.Feature.transformWithOptions( + geom, write, false, opt_options)); + } }); } return features;