diff --git a/src/ol/parser/featureparser.js b/src/ol/parser/featureparser.js index d284865c1c..cd614b4f91 100644 --- a/src/ol/parser/featureparser.js +++ b/src/ol/parser/featureparser.js @@ -2,7 +2,6 @@ goog.provide('ol.parser.AsyncObjectFeatureParser'); goog.provide('ol.parser.AsyncStringFeatureParser'); goog.provide('ol.parser.DomFeatureParser'); goog.provide('ol.parser.ObjectFeatureParser'); -goog.provide('ol.parser.ReadFeaturesOptions'); goog.provide('ol.parser.ReadFeaturesResult'); goog.provide('ol.parser.StringFeatureParser'); @@ -18,7 +17,6 @@ ol.parser.DomFeatureParser = function() {}; /** * @param {Element|Document} node Document or element node. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ ol.parser.DomFeatureParser.prototype.readFeaturesFromNode = @@ -34,7 +32,6 @@ ol.parser.ObjectFeatureParser = function() {}; /** * @param {Object} obj Object representing features. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ ol.parser.ObjectFeatureParser.prototype.readFeaturesFromObject = @@ -50,7 +47,6 @@ ol.parser.StringFeatureParser = function() {}; /** * @param {string} data String data. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ ol.parser.StringFeatureParser.prototype.readFeaturesFromString = @@ -68,7 +64,6 @@ ol.parser.AsyncStringFeatureParser = function() {}; * @param {string} data String data. * @param {function(ol.parser.ReadFeaturesResult)} callback Callback which is * called after parsing. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. */ ol.parser.AsyncStringFeatureParser.prototype.readFeaturesFromStringAsync = goog.abstractMethod; @@ -85,30 +80,17 @@ ol.parser.AsyncObjectFeatureParser = function() {}; * @param {Object} obj Object representing features. * @param {function(ol.parser.ReadFeaturesResult)} callback Callback which is * called after parsing. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. */ ol.parser.AsyncObjectFeatureParser.prototype.readFeaturesFromObjectAsync = goog.abstractMethod; -/** - * @typedef {function(ol.Feature, ol.geom.GeometryType):ol.geom.SharedVertices} - */ -ol.parser.ReadFeaturesCallback; - - /** * @typedef {{projection: ol.proj.ProjectionLike}} */ ol.parser.ReadFeaturesMetadata; -/** - * @typedef {{callback: ol.parser.ReadFeaturesCallback}} - */ -ol.parser.ReadFeaturesOptions; - - /** * @typedef {{features: Array., * metadata: ol.parser.ReadFeaturesMetadata}} diff --git a/src/ol/parser/geojsonparser.js b/src/ol/parser/geojsonparser.js index ad648cbf9a..7e448188e3 100644 --- a/src/ol/parser/geojsonparser.js +++ b/src/ol/parser/geojsonparser.js @@ -12,9 +12,7 @@ goog.require('ol.geom.MultiPoint'); goog.require('ol.geom.MultiPolygon'); goog.require('ol.geom.Point'); goog.require('ol.geom.Polygon'); -goog.require('ol.geom.SharedVertices'); goog.require('ol.parser.Parser'); -goog.require('ol.parser.ReadFeaturesOptions'); goog.require('ol.parser.ReadFeaturesResult'); goog.require('ol.parser.StringFeatureParser'); @@ -60,13 +58,11 @@ ol.parser.GeoJSON.read = function(str) { /** * Parse a GeoJSON feature collection. * @param {string} str GeoJSON feature collection. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ -ol.parser.GeoJSON.prototype.readFeaturesFromString = - function(str, opt_options) { +ol.parser.GeoJSON.prototype.readFeaturesFromString = function(str) { var json = /** @type {GeoJSONFeatureCollection} */ (JSON.parse(str)); - return this.parseAsFeatureCollection_(json, opt_options); + return this.parseAsFeatureCollection_(json); }; @@ -74,43 +70,38 @@ ol.parser.GeoJSON.prototype.readFeaturesFromString = * Parse a GeoJSON feature collection from decoded JSON. * @param {GeoJSONFeatureCollection} object GeoJSON feature collection decoded * from JSON. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ -ol.parser.GeoJSON.prototype.readFeaturesFromObject = - function(object, opt_options) { - return this.parseAsFeatureCollection_(object, opt_options); +ol.parser.GeoJSON.prototype.readFeaturesFromObject = function(object) { + return this.parseAsFeatureCollection_(object); }; /** - * Parse any GeoJSON object. Note that this method should not be called - * recursively due to the shared vertex creation. + * Parse any GeoJSON object. * * @param {GeoJSONObject} json GeoJSON object. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.Feature|Array.| * ol.geom.Geometry|Array.} Parsed geometry or array * of geometries. * @private */ -ol.parser.GeoJSON.prototype.parse_ = function(json, opt_options) { +ol.parser.GeoJSON.prototype.parse_ = function(json) { var result; if (json.type === 'FeatureCollection') { result = this.parseFeatureCollection_( - /** @type {GeoJSONFeatureCollection} */ (json), opt_options); + /** @type {GeoJSONFeatureCollection} */ (json)); } else if (json.type === 'Feature') { result = this.parseFeature_( - /** @type {GeoJSONFeature} */ (json), opt_options); + /** @type {GeoJSONFeature} */ (json)); } else if (json.type === 'GeometryCollection') { result = this.parseGeometryCollection_( - /** @type {GeoJSONGeometryCollection} */ (json), opt_options); + /** @type {GeoJSONGeometryCollection} */ (json)); } else { // we've been called with a geometry or an unknown object // create a feature to get shared vertices handling var feature = this.parseFeature_( - /** @type {GeoJSONFeature} */ ({type: 'Feature', geometry: json}), - opt_options); + /** @type {GeoJSONFeature} */ ({type: 'Feature', geometry: json})); result = feature.getGeometry(); } return result; @@ -119,14 +110,12 @@ ol.parser.GeoJSON.prototype.parse_ = function(json, opt_options) { /** * @param {GeoJSONObject} json GeoJSON object. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.parser.ReadFeaturesResult} Parsed object coerced into array of * features. * @private */ -ol.parser.GeoJSON.prototype.parseAsFeatureCollection_ = function(json, - opt_options) { - var obj = this.parse_(json, opt_options); +ol.parser.GeoJSON.prototype.parseAsFeatureCollection_ = function(json) { + var obj = this.parse_(json); var features = []; var feature; if (obj instanceof ol.Feature) { @@ -164,45 +153,36 @@ ol.parser.GeoJSON.prototype.parseAsFeatureCollection_ = function(json, /** * @param {GeoJSONFeature} json GeoJSON feature. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Read options. * @return {ol.Feature} Parsed feature. * @private */ -ol.parser.GeoJSON.prototype.parseFeature_ = function(json, opt_options) { +ol.parser.GeoJSON.prototype.parseFeature_ = function(json) { var geomJson = json.geometry, - geometry = null, - options = opt_options || {}; + geometry = null; var feature = new ol.Feature(json.properties); if (goog.isDef(json.id)) { feature.setId(json.id); } if (geomJson) { var type = geomJson.type; - var callback = options.callback; - var sharedVertices; - if (callback) { - goog.asserts.assert(type in ol.parser.GeoJSON.GeometryType, - 'Bad geometry type: ' + type); - sharedVertices = callback(feature, ol.parser.GeoJSON.GeometryType[type]); - } switch (type) { case 'Point': - geometry = this.parsePoint_(geomJson, sharedVertices); + geometry = this.parsePoint_(geomJson); break; case 'LineString': - geometry = this.parseLineString_(geomJson, sharedVertices); + geometry = this.parseLineString_(geomJson); break; case 'Polygon': - geometry = this.parsePolygon_(geomJson, sharedVertices); + geometry = this.parsePolygon_(geomJson); break; case 'MultiPoint': - geometry = this.parseMultiPoint_(geomJson, sharedVertices); + geometry = this.parseMultiPoint_(geomJson); break; case 'MultiLineString': - geometry = this.parseMultiLineString_(geomJson, sharedVertices); + geometry = this.parseMultiLineString_(geomJson); break; case 'MultiPolygon': - geometry = this.parseMultiPolygon_(geomJson, sharedVertices); + geometry = this.parseMultiPolygon_(geomJson); break; default: throw new Error('Bad geometry type: ' + type); @@ -215,20 +195,17 @@ ol.parser.GeoJSON.prototype.parseFeature_ = function(json, opt_options) { /** * @param {GeoJSONFeatureCollection} json GeoJSON feature collection. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Read options. * @return {Array.} Parsed array of features. * @private */ -ol.parser.GeoJSON.prototype.parseFeatureCollection_ = function( - json, opt_options) { +ol.parser.GeoJSON.prototype.parseFeatureCollection_ = function(json) { var features = json.features, len = features.length, result = new Array(len), i; for (i = 0; i < len; ++i) { - result[i] = this.parseFeature_( - /** @type {GeoJSONFeature} */ (features[i]), opt_options); + result[i] = this.parseFeature_(/** @type {GeoJSONFeature} */ (features[i])); } return result; }; @@ -236,20 +213,17 @@ ol.parser.GeoJSON.prototype.parseFeatureCollection_ = function( /** * @param {GeoJSONGeometryCollection} json GeoJSON geometry collection. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Read options. * @return {Array.} Parsed array of geometries. * @private */ -ol.parser.GeoJSON.prototype.parseGeometryCollection_ = function(json, - opt_options) { +ol.parser.GeoJSON.prototype.parseGeometryCollection_ = function(json) { var geometries = json.geometries, len = geometries.length, result = new Array(len), i; for (i = 0; i < len; ++i) { - result[i] = this.parse_(/** @type {GeoJSONGeometry} */ (geometries[i]), - opt_options); + result[i] = this.parse_(/** @type {GeoJSONGeometry} */ (geometries[i])); } return result; }; @@ -257,68 +231,61 @@ ol.parser.GeoJSON.prototype.parseGeometryCollection_ = function(json, /** * @param {GeoJSONGeometry} json GeoJSON linestring. - * @param {ol.geom.SharedVertices=} opt_vertices Shared vertices. * @return {ol.geom.LineString} Parsed linestring. * @private */ -ol.parser.GeoJSON.prototype.parseLineString_ = function(json, opt_vertices) { - return new ol.geom.LineString(json.coordinates, opt_vertices); +ol.parser.GeoJSON.prototype.parseLineString_ = function(json) { + return new ol.geom.LineString(json.coordinates); }; /** * @param {GeoJSONGeometry} json GeoJSON multi-linestring. - * @param {ol.geom.SharedVertices=} opt_vertices Shared vertices. * @return {ol.geom.MultiLineString} Parsed multi-linestring. * @private */ -ol.parser.GeoJSON.prototype.parseMultiLineString_ = function( - json, opt_vertices) { - return new ol.geom.MultiLineString(json.coordinates, opt_vertices); +ol.parser.GeoJSON.prototype.parseMultiLineString_ = function(json) { + return new ol.geom.MultiLineString(json.coordinates); }; /** * @param {GeoJSONGeometry} json GeoJSON multi-point. - * @param {ol.geom.SharedVertices=} opt_vertices Shared vertices. * @return {ol.geom.MultiPoint} Parsed multi-point. * @private */ -ol.parser.GeoJSON.prototype.parseMultiPoint_ = function(json, opt_vertices) { - return new ol.geom.MultiPoint(json.coordinates, opt_vertices); +ol.parser.GeoJSON.prototype.parseMultiPoint_ = function(json) { + return new ol.geom.MultiPoint(json.coordinates); }; /** * @param {GeoJSONGeometry} json GeoJSON multi-polygon. - * @param {ol.geom.SharedVertices=} opt_vertices Shared vertices. * @return {ol.geom.MultiPolygon} Parsed multi-polygon. * @private */ -ol.parser.GeoJSON.prototype.parseMultiPolygon_ = function(json, opt_vertices) { - return new ol.geom.MultiPolygon(json.coordinates, opt_vertices); +ol.parser.GeoJSON.prototype.parseMultiPolygon_ = function(json) { + return new ol.geom.MultiPolygon(json.coordinates); }; /** * @param {GeoJSONGeometry} json GeoJSON point. - * @param {ol.geom.SharedVertices=} opt_vertices Shared vertices. * @return {ol.geom.Point} Parsed point. * @private */ -ol.parser.GeoJSON.prototype.parsePoint_ = function(json, opt_vertices) { - return new ol.geom.Point(json.coordinates, opt_vertices); +ol.parser.GeoJSON.prototype.parsePoint_ = function(json) { + return new ol.geom.Point(json.coordinates); }; /** * @param {GeoJSONGeometry} json GeoJSON polygon. - * @param {ol.geom.SharedVertices=} opt_vertices Shared vertices. * @return {ol.geom.Polygon} Parsed polygon. * @private */ -ol.parser.GeoJSON.prototype.parsePolygon_ = function(json, opt_vertices) { - return new ol.geom.Polygon(json.coordinates, opt_vertices); +ol.parser.GeoJSON.prototype.parsePolygon_ = function(json) { + return new ol.geom.Polygon(json.coordinates); }; diff --git a/src/ol/parser/gpxparser.js b/src/ol/parser/gpxparser.js index a8e0f61057..9648360d87 100644 --- a/src/ol/parser/gpxparser.js +++ b/src/ol/parser/gpxparser.js @@ -9,7 +9,6 @@ goog.require('ol.geom.Point'); goog.require('ol.geom.Polygon'); goog.require('ol.parser.DomFeatureParser'); goog.require('ol.parser.ObjectFeatureParser'); -goog.require('ol.parser.ReadFeaturesOptions'); goog.require('ol.parser.StringFeatureParser'); goog.require('ol.parser.XML'); @@ -58,14 +57,7 @@ ol.parser.GPX = function(opt_options) { parseFloat(node.getAttribute('lat'))]; this.readChildNodes(node, properties); var feature = new ol.Feature(properties); - var sharedVertices; - if (this.readFeaturesOptions_) { - var callback = this.readFeaturesOptions_.callback; - if (callback) { - sharedVertices = callback(feature, ol.geom.GeometryType.POINT); - } - } - var geometry = new ol.geom.Point(coordinates, sharedVertices); + var geometry = new ol.geom.Point(coordinates); feature.setGeometry(geometry); obj.features.push(feature); } @@ -82,15 +74,7 @@ ol.parser.GPX = function(opt_options) { }; this.readChildNodes(node, container); var feature = new ol.Feature(container.properties); - var sharedVertices; - if (this.readFeaturesOptions_) { - var callback = this.readFeaturesOptions_.callback; - if (callback) { - sharedVertices = callback(feature, type); - } - } - var geometry = new ol.geom.LineString(container.geometry.coordinates, - sharedVertices); + var geometry = new ol.geom.LineString(container.geometry.coordinates); feature.setGeometry(geometry); obj.features.push(feature); } @@ -255,12 +239,9 @@ ol.parser.GPX.prototype.read = function(data) { /** * Parse a GPX document provided as a string. * @param {string} str GPX document. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ -ol.parser.GPX.prototype.readFeaturesFromString = - function(str, opt_options) { - this.readFeaturesOptions_ = opt_options; +ol.parser.GPX.prototype.readFeaturesFromString = function(str) { return this.read(str); }; @@ -268,24 +249,18 @@ ol.parser.GPX.prototype.readFeaturesFromString = /** * Parse a GPX document provided as a DOM structure. * @param {Element|Document} node Document or element node. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ -ol.parser.GPX.prototype.readFeaturesFromNode = - function(node, opt_options) { - this.readFeaturesOptions_ = opt_options; +ol.parser.GPX.prototype.readFeaturesFromNode = function(node) { return this.read(node); }; /** * @param {Object} obj Object representing features. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ -ol.parser.GPX.prototype.readFeaturesFromObject = - function(obj, opt_options) { - this.readFeaturesOptions_ = opt_options; +ol.parser.GPX.prototype.readFeaturesFromObject = function(obj) { return this.read(obj); }; diff --git a/src/ol/parser/kmlparser.js b/src/ol/parser/kmlparser.js index d10945df1b..00817e985e 100644 --- a/src/ol/parser/kmlparser.js +++ b/src/ol/parser/kmlparser.js @@ -20,11 +20,9 @@ goog.require('ol.geom.MultiPoint'); goog.require('ol.geom.MultiPolygon'); goog.require('ol.geom.Point'); goog.require('ol.geom.Polygon'); -goog.require('ol.geom.SharedVertices'); goog.require('ol.parser.AsyncObjectFeatureParser'); goog.require('ol.parser.AsyncStringFeatureParser'); goog.require('ol.parser.DomFeatureParser'); -goog.require('ol.parser.ReadFeaturesOptions'); goog.require('ol.parser.StringFeatureParser'); goog.require('ol.parser.XML'); goog.require('ol.style.Fill'); @@ -104,7 +102,6 @@ ol.parser.KML = function(opt_options) { }, 'Placemark': function(node, obj) { var container = {properties: {}}; - var sharedVertices, callback; var id = node.getAttribute('id'); this.readChildNodes(node, container); if (goog.isDef(container.track)) { @@ -132,15 +129,7 @@ ol.parser.KML = function(opt_options) { } var geom = track.points[i]; if (geom) { - sharedVertices = undefined; - if (this.readFeaturesOptions_) { - callback = this.readFeaturesOptions_.callback; - if (callback) { - sharedVertices = callback(feature, geom.type); - } - } - var geometry = this.createGeometry_({geometry: geom}, - sharedVertices); + var geometry = this.createGeometry_({geometry: geom}); if (goog.isDef(geometry)) { feature.setGeometry(geometry); } @@ -159,14 +148,7 @@ ol.parser.KML = function(opt_options) { feature.setId(id); } if (container.geometry) { - sharedVertices = undefined; - if (this.readFeaturesOptions_) { - callback = this.readFeaturesOptions_.callback; - if (callback) { - sharedVertices = callback(feature, container.geometry.type); - } - } - geometry = this.createGeometry_(container, sharedVertices); + geometry = this.createGeometry_(container); if (goog.isDef(geometry)) { feature.setGeometry(geometry); } @@ -850,11 +832,8 @@ goog.inherits(ol.parser.KML, ol.parser.XML); * @param {Object} obj Object representing features. * @param {function(ol.parser.ReadFeaturesResult)} callback Callback which is * called after parsing. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. */ -ol.parser.KML.prototype.readFeaturesFromObjectAsync = - function(obj, callback, opt_options) { - this.readFeaturesOptions_ = opt_options; +ol.parser.KML.prototype.readFeaturesFromObjectAsync = function(obj, callback) { this.read(obj, callback); }; @@ -863,11 +842,8 @@ ol.parser.KML.prototype.readFeaturesFromObjectAsync = * @param {string} str String data. * @param {function(ol.parser.ReadFeaturesResult)} * callback Callback which is called after parsing. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. */ -ol.parser.KML.prototype.readFeaturesFromStringAsync = - function(str, callback, opt_options) { - this.readFeaturesOptions_ = opt_options; +ol.parser.KML.prototype.readFeaturesFromStringAsync = function(str, callback) { this.read(str, callback); }; @@ -875,12 +851,9 @@ ol.parser.KML.prototype.readFeaturesFromStringAsync = /** * Parse a KML document provided as a string. * @param {string} str KML document. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ -ol.parser.KML.prototype.readFeaturesFromString = - function(str, opt_options) { - this.readFeaturesOptions_ = opt_options; +ol.parser.KML.prototype.readFeaturesFromString = function(str) { return /** @type {ol.parser.ReadFeaturesResult} */ (this.read(str)); }; @@ -888,24 +861,18 @@ ol.parser.KML.prototype.readFeaturesFromString = /** * Parse a KML document provided as a DOM structure. * @param {Element|Document} node Document or element node. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ -ol.parser.KML.prototype.readFeaturesFromNode = - function(node, opt_options) { - this.readFeaturesOptions_ = opt_options; +ol.parser.KML.prototype.readFeaturesFromNode = function(node) { return /** @type {ol.parser.ReadFeaturesResult} */ (this.read(node)); }; /** * @param {Object} obj Object representing features. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ -ol.parser.KML.prototype.readFeaturesFromObject = - function(obj, opt_options) { - this.readFeaturesOptions_ = opt_options; +ol.parser.KML.prototype.readFeaturesFromObject = function(obj) { return /** @type {ol.parser.ReadFeaturesResult} */ (this.read(obj)); }; @@ -1028,52 +995,47 @@ ol.parser.KML.prototype.applyStyle_ = function(feature, styles, /** * @private * @param {Object} container Geometry container. - * @param {ol.geom.SharedVertices=} opt_vertices Shared vertices. * @return {ol.geom.Geometry} The geometry created. */ -ol.parser.KML.prototype.createGeometry_ = function(container, - opt_vertices) { +ol.parser.KML.prototype.createGeometry_ = function(container) { var geometry = null, coordinates, i, ii; switch (container.geometry.type) { case ol.geom.GeometryType.POINT: - geometry = new ol.geom.Point(container.geometry.coordinates, - opt_vertices); + geometry = new ol.geom.Point(container.geometry.coordinates); break; case ol.geom.GeometryType.LINESTRING: - geometry = new ol.geom.LineString(container.geometry.coordinates, - opt_vertices); + geometry = new ol.geom.LineString(container.geometry.coordinates); break; case ol.geom.GeometryType.POLYGON: - geometry = new ol.geom.Polygon(container.geometry.coordinates, - opt_vertices); + geometry = new ol.geom.Polygon(container.geometry.coordinates); break; case ol.geom.GeometryType.MULTIPOINT: coordinates = []; for (i = 0, ii = container.geometry.parts.length; i < ii; i++) { coordinates.push(container.geometry.parts[i].coordinates); } - geometry = new ol.geom.MultiPoint(coordinates, opt_vertices); + geometry = new ol.geom.MultiPoint(coordinates); break; case ol.geom.GeometryType.MULTILINESTRING: coordinates = []; for (i = 0, ii = container.geometry.parts.length; i < ii; i++) { coordinates.push(container.geometry.parts[i].coordinates); } - geometry = new ol.geom.MultiLineString(coordinates, opt_vertices); + geometry = new ol.geom.MultiLineString(coordinates); break; case ol.geom.GeometryType.MULTIPOLYGON: coordinates = []; for (i = 0, ii = container.geometry.parts.length; i < ii; i++) { coordinates.push(container.geometry.parts[i].coordinates); } - geometry = new ol.geom.MultiPolygon(coordinates, opt_vertices); + geometry = new ol.geom.MultiPolygon(coordinates); break; case ol.geom.GeometryType.GEOMETRYCOLLECTION: var geometries = []; for (i = 0, ii = container.geometry.parts.length; i < ii; i++) { geometries.push(this.createGeometry_({ geometry: container.geometry.parts[i] - }, opt_vertices)); + })); } geometry = new ol.geom.GeometryCollection(geometries); break; diff --git a/src/ol/parser/ogc/gmlparser.js b/src/ol/parser/ogc/gmlparser.js index 35bf2302ef..250e845714 100644 --- a/src/ol/parser/ogc/gmlparser.js +++ b/src/ol/parser/ogc/gmlparser.js @@ -303,15 +303,7 @@ ol.parser.ogc.GML = function(opt_options) { var feature = new ol.Feature(container.properties); var geom = container.geometry; if (geom) { - var sharedVertices = undefined; - if (this.readFeaturesOptions_) { - var callback = this.readFeaturesOptions_.callback; - if (callback) { - sharedVertices = callback(feature, geom.type); - } - } - var geometry = this.createGeometry({geometry: geom}, - sharedVertices); + var geometry = this.createGeometry({geometry: geom}); if (goog.isDef(geometry)) { feature.setGeometry(geometry); } @@ -551,57 +543,51 @@ ol.parser.ogc.GML.prototype.readNode = function(node, obj, opt_first) { /** * @param {Object} container Geometry container. - * @param {ol.geom.SharedVertices=} opt_vertices Shared vertices. * @return {ol.geom.Geometry} The geometry created. */ // TODO use a mixin since this is also used in the KML parser -ol.parser.ogc.GML.prototype.createGeometry = function(container, - opt_vertices) { +ol.parser.ogc.GML.prototype.createGeometry = function(container) { var geometry = null, coordinates, i, ii; switch (container.geometry.type) { case ol.geom.GeometryType.POINT: - geometry = new ol.geom.Point(container.geometry.coordinates, - opt_vertices); + geometry = new ol.geom.Point(container.geometry.coordinates); break; case ol.geom.GeometryType.LINEARRING: - geometry = new ol.geom.LinearRing(container.geometry.coordinates, - opt_vertices); + geometry = new ol.geom.LinearRing(container.geometry.coordinates); break; case ol.geom.GeometryType.LINESTRING: - geometry = new ol.geom.LineString(container.geometry.coordinates, - opt_vertices); + geometry = new ol.geom.LineString(container.geometry.coordinates); break; case ol.geom.GeometryType.POLYGON: - geometry = new ol.geom.Polygon(container.geometry.coordinates, - opt_vertices); + geometry = new ol.geom.Polygon(container.geometry.coordinates); break; case ol.geom.GeometryType.MULTIPOINT: coordinates = []; for (i = 0, ii = container.geometry.parts.length; i < ii; i++) { coordinates.push(container.geometry.parts[i].coordinates); } - geometry = new ol.geom.MultiPoint(coordinates, opt_vertices); + geometry = new ol.geom.MultiPoint(coordinates); break; case ol.geom.GeometryType.MULTILINESTRING: coordinates = []; for (i = 0, ii = container.geometry.parts.length; i < ii; i++) { coordinates.push(container.geometry.parts[i].coordinates); } - geometry = new ol.geom.MultiLineString(coordinates, opt_vertices); + geometry = new ol.geom.MultiLineString(coordinates); break; case ol.geom.GeometryType.MULTIPOLYGON: coordinates = []; for (i = 0, ii = container.geometry.parts.length; i < ii; i++) { coordinates.push(container.geometry.parts[i].coordinates); } - geometry = new ol.geom.MultiPolygon(coordinates, opt_vertices); + geometry = new ol.geom.MultiPolygon(coordinates); break; case ol.geom.GeometryType.GEOMETRYCOLLECTION: var geometries = []; for (i = 0, ii = container.geometry.parts.length; i < ii; i++) { geometries.push(this.createGeometry({ geometry: container.geometry.parts[i] - }, opt_vertices)); + })); } geometry = new ol.geom.GeometryCollection(geometries); break; @@ -615,12 +601,9 @@ ol.parser.ogc.GML.prototype.createGeometry = function(container, /** * Parse a GML document provided as a string. * @param {string} str GML document. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ -ol.parser.ogc.GML.prototype.readFeaturesFromString = - function(str, opt_options) { - this.readFeaturesOptions_ = opt_options; +ol.parser.ogc.GML.prototype.readFeaturesFromString = function(str) { return this.read(str); }; diff --git a/src/ol/parser/topojsonparser.js b/src/ol/parser/topojsonparser.js index 0dcccb8165..8bcbaf57e6 100644 --- a/src/ol/parser/topojsonparser.js +++ b/src/ol/parser/topojsonparser.js @@ -3,7 +3,6 @@ goog.provide('ol.parser.TopoJSON'); goog.require('ol.Coordinate'); goog.require('ol.CoordinateArray'); goog.require('ol.Feature'); -goog.require('ol.geom.GeometryType'); goog.require('ol.geom.LineString'); goog.require('ol.geom.MultiLineString'); goog.require('ol.geom.MultiPoint'); @@ -11,7 +10,6 @@ goog.require('ol.geom.MultiPolygon'); goog.require('ol.geom.Point'); goog.require('ol.geom.Polygon'); goog.require('ol.parser.Parser'); -goog.require('ol.parser.ReadFeaturesOptions'); goog.require('ol.parser.StringFeatureParser'); @@ -23,18 +21,7 @@ goog.require('ol.parser.StringFeatureParser'); * @implements {ol.parser.StringFeatureParser} * @extends {ol.parser.Parser} */ -ol.parser.TopoJSON = function() { - - /** - * Common feature for all shared vertex creation. - * // TODO: make feature optional in shared vertex callback - * - * @type {ol.Feature} - * @private - */ - this.feature_ = new ol.Feature(); - -}; +ol.parser.TopoJSON = function() {}; goog.inherits(ol.parser.TopoJSON, ol.parser.Parser); goog.addSingletonGetter(ol.parser.TopoJSON); @@ -65,6 +52,10 @@ ol.parser.TopoJSON.prototype.concatenateArcs_ = function(indices, arcs) { } coordinates.push.apply(coordinates, arc); } + // provide fresh copies of coordinate arrays + for (var j = 0, jj = coordinates.length; j < jj; ++j) { + coordinates[j] = coordinates[j].slice(); + } return coordinates; }; @@ -84,17 +75,17 @@ ol.parser.TopoJSON.prototype.read = function(str) { * Create features from a TopoJSON topology string. * * @param {string} str TopoJSON topology string. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ -ol.parser.TopoJSON.prototype.readFeaturesFromString = - function(str, opt_options) { +ol.parser.TopoJSON.prototype.readFeaturesFromString = function(str) { var topology = /** @type {TopoJSONTopology} */ (JSON.parse(str)); if (topology.type !== 'Topology') { throw new Error('Not a "Topology" type object'); } - return {features: this.readFeaturesFromTopology_(topology, opt_options), - metadata: {projection: 'EPSG:4326'}}; + return { + features: this.readFeaturesFromTopology_(topology), + metadata: {projection: 'EPSG:4326'} + }; }; @@ -102,16 +93,16 @@ ol.parser.TopoJSON.prototype.readFeaturesFromString = * Create features from a TopoJSON topology object. * * @param {TopoJSONTopology} topology TopoJSON topology object. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.parser.ReadFeaturesResult} Features and metadata. */ -ol.parser.TopoJSON.prototype.readFeaturesFromObject = - function(topology, opt_options) { +ol.parser.TopoJSON.prototype.readFeaturesFromObject = function(topology) { if (topology.type !== 'Topology') { throw new Error('Not a "Topology" type object'); } - return {features: this.readFeaturesFromTopology_(topology, opt_options), - metadata: {projection: 'EPSG:4326'}}; + return { + features: this.readFeaturesFromTopology_(topology), + metadata: {projection: 'EPSG:4326'} + }; }; @@ -122,32 +113,30 @@ ol.parser.TopoJSON.prototype.readFeaturesFromObject = * @param {Array.} arcs Array of arcs. * @param {Array.} scale Scale for each dimension. * @param {Array.} translate Translation for each dimension. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.Feature} Feature. * @private */ ol.parser.TopoJSON.prototype.readFeatureFromGeometry_ = function(object, arcs, - scale, translate, opt_options) { + scale, translate) { var geometry; var type = object.type; if (type === 'Point') { geometry = this.readPoint_(/** @type {TopoJSONPoint} */ (object), scale, - translate, opt_options); + translate); } else if (type === 'LineString') { geometry = this.readLineString_(/** @type {TopoJSONLineString} */ (object), - arcs, opt_options); + arcs); } else if (type === 'Polygon') { - geometry = this.readPolygon_(/** @type {TopoJSONPolygon} */ (object), arcs, - opt_options); + geometry = this.readPolygon_(/** @type {TopoJSONPolygon} */ (object), arcs); } else if (type === 'MultiPoint') { geometry = this.readMultiPoint_(/** @type {TopoJSONMultiPoint} */ (object), - scale, translate, opt_options); + scale, translate); } else if (type === 'MultiLineString') { geometry = this.readMultiLineString_( - /** @type {TopoJSONMultiLineString} */(object), arcs, opt_options); + /** @type {TopoJSONMultiLineString} */(object), arcs); } else if (type === 'MultiPolygon') { geometry = this.readMultiPolygon_( - /** @type {TopoJSONMultiPolygon} */ (object), arcs, opt_options); + /** @type {TopoJSONMultiPolygon} */ (object), arcs); } else { throw new Error('Unsupported geometry type: ' + type); } @@ -168,18 +157,17 @@ ol.parser.TopoJSON.prototype.readFeatureFromGeometry_ = function(object, arcs, * @param {Array.} arcs Array of arcs. * @param {Array.} scale Scale for each dimension. * @param {Array.} translate Translation for each dimension. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {Array.} Array of features. * @private */ ol.parser.TopoJSON.prototype.readFeaturesFromGeometryCollection_ = function( - collection, arcs, scale, translate, opt_options) { + collection, arcs, scale, translate) { var geometries = collection.geometries; var num = geometries.length; var features = new Array(num); for (var i = 0; i < num; ++i) { features[i] = this.readFeatureFromGeometry_(geometries[i], arcs, scale, - translate, opt_options); + translate); } return features; }; @@ -187,12 +175,10 @@ ol.parser.TopoJSON.prototype.readFeaturesFromGeometryCollection_ = function( /** * @param {TopoJSONTopology} topology TopoJSON object. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {Array.} Parsed features. * @private */ -ol.parser.TopoJSON.prototype.readFeaturesFromTopology_ = function( - topology, opt_options) { +ol.parser.TopoJSON.prototype.readFeaturesFromTopology_ = function(topology) { var transform = topology.transform; var scale = transform.scale; var translate = transform.translate; @@ -204,11 +190,11 @@ ol.parser.TopoJSON.prototype.readFeaturesFromTopology_ = function( if (objects[key].type === 'GeometryCollection') { features.push.apply(features, this.readFeaturesFromGeometryCollection_( /** @type {TopoJSONGeometryCollection} */ (objects[key]), - arcs, scale, translate, opt_options)); + arcs, scale, translate)); } else { features.push(this.readFeatureFromGeometry_( /** @type {TopoJSONGeometry} */ (objects[key]), - arcs, scale, translate, opt_options)); + arcs, scale, translate)); } } return features; @@ -220,20 +206,12 @@ ol.parser.TopoJSON.prototype.readFeaturesFromTopology_ = function( * * @param {TopoJSONLineString} object TopoJSON object. * @param {Array.} arcs Array of arcs. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.geom.LineString} Geometry. * @private */ -ol.parser.TopoJSON.prototype.readLineString_ = function(object, arcs, - opt_options) { +ol.parser.TopoJSON.prototype.readLineString_ = function(object, arcs) { var coordinates = this.concatenateArcs_(object.arcs, arcs); - // TODO: make feature optional in callback - var callback = opt_options && opt_options.callback; - var sharedVertices; - if (callback) { - sharedVertices = callback(this.feature_, ol.geom.GeometryType.LINESTRING); - } - return new ol.geom.LineString(coordinates, sharedVertices); + return new ol.geom.LineString(coordinates); }; @@ -242,26 +220,17 @@ ol.parser.TopoJSON.prototype.readLineString_ = function(object, arcs, * * @param {TopoJSONMultiLineString} object TopoJSON object. * @param {Array.} arcs Array of arcs. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.geom.MultiLineString} Geometry. * @private */ -ol.parser.TopoJSON.prototype.readMultiLineString_ = function(object, arcs, - opt_options) { +ol.parser.TopoJSON.prototype.readMultiLineString_ = function(object, arcs) { var array = object.arcs; // I'm out of good names var num = array.length; var coordinates = new Array(num); for (var i = 0; i < num; ++i) { coordinates[i] = this.concatenateArcs_(array[i], arcs); } - // TODO: make feature optional in callback - var callback = opt_options && opt_options.callback; - var sharedVertices; - if (callback) { - sharedVertices = callback(this.feature_, - ol.geom.GeometryType.MULTILINESTRING); - } - return new ol.geom.MultiLineString(coordinates, sharedVertices); + return new ol.geom.MultiLineString(coordinates); }; @@ -271,23 +240,16 @@ ol.parser.TopoJSON.prototype.readMultiLineString_ = function(object, arcs, * @param {TopoJSONMultiPoint} object TopoJSON object. * @param {Array.} scale Scale for each dimension. * @param {Array.} translate Translation for each dimension. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.geom.MultiPoint} Geometry. * @private */ ol.parser.TopoJSON.prototype.readMultiPoint_ = function(object, scale, - translate, opt_options) { + translate) { var coordinates = object.coordinates; for (var i = 0, ii = coordinates.length; i < ii; ++i) { this.transformVertex_(coordinates[i], scale, translate); } - // TODO: make feature optional in callback - var callback = opt_options && opt_options.callback; - var sharedVertices; - if (callback) { - sharedVertices = callback(this.feature_, ol.geom.GeometryType.MULTIPOINT); - } - return new ol.geom.MultiPoint(coordinates, sharedVertices); + return new ol.geom.MultiPoint(coordinates); }; @@ -296,12 +258,10 @@ ol.parser.TopoJSON.prototype.readMultiPoint_ = function(object, scale, * * @param {TopoJSONMultiPolygon} object TopoJSON object. * @param {Array.} arcs Array of arcs. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.geom.MultiPolygon} Geometry. * @private */ -ol.parser.TopoJSON.prototype.readMultiPolygon_ = function(object, arcs, - opt_options) { +ol.parser.TopoJSON.prototype.readMultiPolygon_ = function(object, arcs) { var array = object.arcs; var numPolys = array.length; var coordinates = new Array(numPolys); @@ -317,13 +277,7 @@ ol.parser.TopoJSON.prototype.readMultiPolygon_ = function(object, arcs, } coordinates[i] = ringCoords; } - // TODO: make feature optional in callback - var callback = opt_options && opt_options.callback; - var sharedVertices; - if (callback) { - sharedVertices = callback(this.feature_, ol.geom.GeometryType.MULTIPOLYGON); - } - return new ol.geom.MultiPolygon(coordinates, sharedVertices); + return new ol.geom.MultiPolygon(coordinates); }; @@ -333,21 +287,13 @@ ol.parser.TopoJSON.prototype.readMultiPolygon_ = function(object, arcs, * @param {TopoJSONPoint} object TopoJSON object. * @param {Array.} scale Scale for each dimension. * @param {Array.} translate Translation for each dimension. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.geom.Point} Geometry. * @private */ -ol.parser.TopoJSON.prototype.readPoint_ = function(object, scale, translate, - opt_options) { +ol.parser.TopoJSON.prototype.readPoint_ = function(object, scale, translate) { var coordinates = object.coordinates; this.transformVertex_(coordinates, scale, translate); - // TODO: make feature optional in callback - var callback = opt_options && opt_options.callback; - var sharedVertices; - if (callback) { - sharedVertices = callback(this.feature_, ol.geom.GeometryType.POINT); - } - return new ol.geom.Point(coordinates, sharedVertices); + return new ol.geom.Point(coordinates); }; @@ -356,25 +302,17 @@ ol.parser.TopoJSON.prototype.readPoint_ = function(object, scale, translate, * * @param {TopoJSONPolygon} object TopoJSON object. * @param {Array.} arcs Array of arcs. - * @param {ol.parser.ReadFeaturesOptions=} opt_options Reader options. * @return {ol.geom.Polygon} Geometry. * @private */ -ol.parser.TopoJSON.prototype.readPolygon_ = function(object, arcs, - opt_options) { +ol.parser.TopoJSON.prototype.readPolygon_ = function(object, arcs) { var array = object.arcs; // I'm out of good names var num = array.length; var coordinates = new Array(num); for (var i = 0; i < num; ++i) { coordinates[i] = this.concatenateArcs_(array[i], arcs); } - // TODO: make feature optional in callback - var callback = opt_options && opt_options.callback; - var sharedVertices; - if (callback) { - sharedVertices = callback(this.feature_, ol.geom.GeometryType.POLYGON); - } - return new ol.geom.Polygon(coordinates, sharedVertices); + return new ol.geom.Polygon(coordinates); }; diff --git a/test/spec/ol/parser/geojson.test.js b/test/spec/ol/parser/geojson.test.js index ebba2a1506..c8c7923c32 100644 --- a/test/spec/ol/parser/geojson.test.js +++ b/test/spec/ol/parser/geojson.test.js @@ -218,74 +218,11 @@ describe('ol.parser.GeoJSON', function() { }); }); - it('parses countries.geojson with shared vertices', function() { - afterLoadText('spec/ol/parser/geojson/countries.geojson', function(text) { - var pointVertices = new ol.geom.SharedVertices(); - var lineVertices = new ol.geom.SharedVertices(); - var polygonVertices = new ol.geom.SharedVertices(); - - var lookup = { - 'point': pointVertices, - 'linestring': lineVertices, - 'polygon': polygonVertices, - 'multipoint': pointVertices, - 'multilinstring': lineVertices, - 'multipolygon': polygonVertices - }; - - var callback = function(feature, type) { - return lookup[type]; - }; - - var result = parser.readFeaturesFromString(text, - {callback: callback}).features; - expect(result.length).to.be(179); - - expect(pointVertices.coordinates.length).to.be(0); - expect(lineVertices.coordinates.length).to.be(0); - expect(polygonVertices.coordinates.length).to.be(21344); - - var first = result[0]; - expect(first).to.be.a(ol.Feature); - expect(first.get('name')).to.be('Afghanistan'); - var firstGeom = first.getGeometry(); - expect(firstGeom).to.be.a(ol.geom.Polygon); - expect(ol.extent.equals(firstGeom.getBounds(), - [60.52843, 29.318572, 75.158028, 38.486282])) - .to.be(true); - - var last = result[178]; - expect(last).to.be.a(ol.Feature); - expect(last.get('name')).to.be('Zimbabwe'); - var lastGeom = last.getGeometry(); - expect(lastGeom).to.be.a(ol.geom.Polygon); - expect(ol.extent.equals(lastGeom.getBounds(), - [25.264226, -22.271612, 32.849861, -15.507787])) - .to.be(true); - }); - }); - }); describe('#parseAsFeatureCollection_()', function() { it('generates an array of features for FeatureCollection', function() { - var pointVertices = new ol.geom.SharedVertices(); - var lineVertices = new ol.geom.SharedVertices(); - var polygonVertices = new ol.geom.SharedVertices(); - - var lookup = { - 'point': pointVertices, - 'linestring': lineVertices, - 'polygon': polygonVertices, - 'multipoint': pointVertices, - 'multilinstring': lineVertices, - 'multipolygon': polygonVertices - }; - - var callback = function(feature, type) { - return lookup[type]; - }; var parser = new ol.parser.GeoJSON(); var json = { @@ -310,8 +247,7 @@ describe('ol.parser.GeoJSON', function() { } }] }; - var result = parser.parseAsFeatureCollection_(json, - {callback: callback}); + var result = parser.parseAsFeatureCollection_(json); var features = result.features; expect(features.length).to.be(2); @@ -326,30 +262,10 @@ describe('ol.parser.GeoJSON', function() { expect(second.get('bam')).to.be('baz'); expect(second.getGeometry()).to.be.a(ol.geom.LineString); - expect(pointVertices.coordinates.length).to.be(2); - expect(lineVertices.coordinates.length).to.be(4); - expect(polygonVertices.coordinates.length).to.be(0); - expect(result.metadata.projection).to.be('EPSG:4326'); }); it('reads named crs from top-level object', function() { - var pointVertices = new ol.geom.SharedVertices(); - var lineVertices = new ol.geom.SharedVertices(); - var polygonVertices = new ol.geom.SharedVertices(); - - var lookup = { - 'point': pointVertices, - 'linestring': lineVertices, - 'polygon': polygonVertices, - 'multipoint': pointVertices, - 'multilinstring': lineVertices, - 'multipolygon': polygonVertices - }; - - var callback = function(feature, type) { - return lookup[type]; - }; var parser = new ol.parser.GeoJSON(); var json = { @@ -380,8 +296,7 @@ describe('ol.parser.GeoJSON', function() { } }] }; - var result = parser.parseAsFeatureCollection_(json, - {callback: callback}); + var result = parser.parseAsFeatureCollection_(json); var features = result.features; expect(features.length).to.be(2); @@ -396,30 +311,10 @@ describe('ol.parser.GeoJSON', function() { expect(second.get('bam')).to.be('baz'); expect(second.getGeometry()).to.be.a(ol.geom.LineString); - expect(pointVertices.coordinates.length).to.be(2); - expect(lineVertices.coordinates.length).to.be(4); - expect(polygonVertices.coordinates.length).to.be(0); - expect(result.metadata.projection).to.be('EPSG:1234'); }); it('accepts null crs', function() { - var pointVertices = new ol.geom.SharedVertices(); - var lineVertices = new ol.geom.SharedVertices(); - var polygonVertices = new ol.geom.SharedVertices(); - - var lookup = { - 'point': pointVertices, - 'linestring': lineVertices, - 'polygon': polygonVertices, - 'multipoint': pointVertices, - 'multilinstring': lineVertices, - 'multipolygon': polygonVertices - }; - - var callback = function(feature, type) { - return lookup[type]; - }; var parser = new ol.parser.GeoJSON(); var json = { @@ -445,8 +340,7 @@ describe('ol.parser.GeoJSON', function() { } }] }; - var result = parser.parseAsFeatureCollection_(json, - {callback: callback}); + var result = parser.parseAsFeatureCollection_(json); var features = result.features; expect(features.length).to.be(2); @@ -461,30 +355,10 @@ describe('ol.parser.GeoJSON', function() { expect(second.get('bam')).to.be('baz'); expect(second.getGeometry()).to.be.a(ol.geom.LineString); - expect(pointVertices.coordinates.length).to.be(2); - expect(lineVertices.coordinates.length).to.be(4); - expect(polygonVertices.coordinates.length).to.be(0); - expect(result.metadata.projection).to.be('EPSG:4326'); }); it('generates an array of features for Feature', function() { - var pointVertices = new ol.geom.SharedVertices(); - var lineVertices = new ol.geom.SharedVertices(); - var polygonVertices = new ol.geom.SharedVertices(); - - var lookup = { - 'point': pointVertices, - 'linestring': lineVertices, - 'polygon': polygonVertices, - 'multipoint': pointVertices, - 'multilinstring': lineVertices, - 'multipolygon': polygonVertices - }; - - var callback = function(feature, type) { - return lookup[type]; - }; var parser = new ol.parser.GeoJSON(); var json = { @@ -497,8 +371,7 @@ describe('ol.parser.GeoJSON', function() { coordinates: [[1, 2], [3, 4]] } }; - var result = parser.parseAsFeatureCollection_(json, - {callback: callback}); + var result = parser.parseAsFeatureCollection_(json); var features = result.features; expect(features.length).to.be(1); @@ -508,30 +381,10 @@ describe('ol.parser.GeoJSON', function() { expect(first.get('bam')).to.be('baz'); expect(first.getGeometry()).to.be.a(ol.geom.LineString); - expect(pointVertices.coordinates.length).to.be(0); - expect(lineVertices.coordinates.length).to.be(4); - expect(polygonVertices.coordinates.length).to.be(0); - expect(result.metadata.projection).to.be('EPSG:4326'); }); it('generates an array of features for GeometryCollection', function() { - var pointVertices = new ol.geom.SharedVertices(); - var lineVertices = new ol.geom.SharedVertices(); - var polygonVertices = new ol.geom.SharedVertices(); - - var lookup = { - 'point': pointVertices, - 'linestring': lineVertices, - 'polygon': polygonVertices, - 'multipoint': pointVertices, - 'multilinstring': lineVertices, - 'multipolygon': polygonVertices - }; - - var callback = function(feature, type) { - return lookup[type]; - }; var parser = new ol.parser.GeoJSON(); var json = { @@ -547,8 +400,7 @@ describe('ol.parser.GeoJSON', function() { coordinates: [[[7, 8], [9, 10], [11, 12], [7, 8]]] }] }; - var result = parser.parseAsFeatureCollection_(json, - {callback: callback}); + var result = parser.parseAsFeatureCollection_(json); var features = result.features; expect(features.length).to.be(3); @@ -557,124 +409,57 @@ describe('ol.parser.GeoJSON', function() { expect(features[1].getGeometry()).to.be.a(ol.geom.LineString); expect(features[2].getGeometry()).to.be.a(ol.geom.Polygon); - expect(pointVertices.coordinates.length).to.be(2); - expect(lineVertices.coordinates.length).to.be(4); - expect(polygonVertices.coordinates.length).to.be(8); - expect(result.metadata.projection).to.be('EPSG:4326'); }); it('generates an array of features for Point', function() { - var pointVertices = new ol.geom.SharedVertices(); - var lineVertices = new ol.geom.SharedVertices(); - var polygonVertices = new ol.geom.SharedVertices(); - - var lookup = { - 'point': pointVertices, - 'linestring': lineVertices, - 'polygon': polygonVertices, - 'multipoint': pointVertices, - 'multilinstring': lineVertices, - 'multipolygon': polygonVertices - }; - - var callback = function(feature, type) { - return lookup[type]; - }; var parser = new ol.parser.GeoJSON(); var json = { type: 'Point', coordinates: [1, 2] }; - var result = parser.parseAsFeatureCollection_(json, - {callback: callback}); + var result = parser.parseAsFeatureCollection_(json); var features = result.features; expect(features.length).to.be(1); expect(features[0].getGeometry()).to.be.a(ol.geom.Point); - expect(pointVertices.coordinates.length).to.be(2); - expect(lineVertices.coordinates.length).to.be(0); - expect(polygonVertices.coordinates.length).to.be(0); - expect(result.metadata.projection).to.be('EPSG:4326'); }); it('generates an array of features for LineString', function() { - var pointVertices = new ol.geom.SharedVertices(); - var lineVertices = new ol.geom.SharedVertices(); - var polygonVertices = new ol.geom.SharedVertices(); - - var lookup = { - 'point': pointVertices, - 'linestring': lineVertices, - 'polygon': polygonVertices, - 'multipoint': pointVertices, - 'multilinstring': lineVertices, - 'multipolygon': polygonVertices - }; - - var callback = function(feature, type) { - return lookup[type]; - }; var parser = new ol.parser.GeoJSON(); var json = { type: 'LineString', coordinates: [[3, 4], [5, 6]] }; - var result = parser.parseAsFeatureCollection_(json, - {callback: callback}); + var result = parser.parseAsFeatureCollection_(json); var features = result.features; expect(features.length).to.be(1); expect(features[0].getGeometry()).to.be.a(ol.geom.LineString); - expect(pointVertices.coordinates.length).to.be(0); - expect(lineVertices.coordinates.length).to.be(4); - expect(polygonVertices.coordinates.length).to.be(0); - expect(result.metadata.projection).to.be('EPSG:4326'); }); it('generates an array of features for Polygon', function() { - var pointVertices = new ol.geom.SharedVertices(); - var lineVertices = new ol.geom.SharedVertices(); - var polygonVertices = new ol.geom.SharedVertices(); - - var lookup = { - 'point': pointVertices, - 'linestring': lineVertices, - 'polygon': polygonVertices, - 'multipoint': pointVertices, - 'multilinstring': lineVertices, - 'multipolygon': polygonVertices - }; - - var callback = function(feature, type) { - return lookup[type]; - }; var parser = new ol.parser.GeoJSON(); var json = { type: 'Polygon', coordinates: [[[7, 8], [9, 10], [11, 12], [7, 8]]] }; - var result = parser.parseAsFeatureCollection_(json, - {callback: callback}); + var result = parser.parseAsFeatureCollection_(json); var features = result.features; expect(features.length).to.be(1); expect(features[0].getGeometry()).to.be.a(ol.geom.Polygon); - expect(pointVertices.coordinates.length).to.be(0); - expect(lineVertices.coordinates.length).to.be(0); - expect(polygonVertices.coordinates.length).to.be(8); - expect(result.metadata.projection).to.be('EPSG:4326'); }); @@ -690,5 +475,4 @@ goog.require('ol.geom.LinearRing'); goog.require('ol.geom.LineString'); goog.require('ol.geom.Point'); goog.require('ol.geom.Polygon'); -goog.require('ol.geom.SharedVertices'); goog.require('ol.parser.GeoJSON'); diff --git a/test/spec/ol/parser/topojson.test.js b/test/spec/ol/parser/topojson.test.js index 9cda1170d9..6e83e3014c 100644 --- a/test/spec/ol/parser/topojson.test.js +++ b/test/spec/ol/parser/topojson.test.js @@ -56,33 +56,12 @@ describe('ol.parser.TopoJSON', function() { describe('#readFeaturesFromString()', function() { - it('parses world-110m.geojson with shared vertices', function(done) { + it('parses world-110m.geojson', function(done) { afterLoadText('spec/ol/parser/topojson/world-110m.json', function(text) { - var pointVertices = new ol.geom.SharedVertices(); - var lineVertices = new ol.geom.SharedVertices(); - var polygonVertices = new ol.geom.SharedVertices(); - - var lookup = { - 'point': pointVertices, - 'linestring': lineVertices, - 'polygon': polygonVertices, - 'multipoint': pointVertices, - 'multilinstring': lineVertices, - 'multipolygon': polygonVertices - }; - - var callback = function(feature, type) { - return lookup[type]; - }; - - var result = parser.readFeaturesFromString(text, {callback: callback}); + var result = parser.readFeaturesFromString(text); expect(result.features.length).to.be(178); - expect(pointVertices.coordinates.length).to.be(0); - expect(lineVertices.coordinates.length).to.be(0); - expect(polygonVertices.coordinates.length).to.be(31400); - var first = result.features[0]; expect(first).to.be.a(ol.Feature); var firstGeom = first.getGeometry(); @@ -110,6 +89,5 @@ describe('ol.parser.TopoJSON', function() { goog.require('ol.Feature'); goog.require('ol.geom.MultiPolygon'); goog.require('ol.geom.Polygon'); -goog.require('ol.geom.SharedVertices'); goog.require('ol.parser.Parser'); goog.require('ol.parser.TopoJSON');