diff --git a/src/objectliterals.jsdoc b/src/objectliterals.jsdoc index 4bdaf15193..3d4bf7d6c3 100644 --- a/src/objectliterals.jsdoc +++ b/src/objectliterals.jsdoc @@ -356,10 +356,6 @@ /** * @typedef {Object} ol.parser.GMLOptions - * @property {string|undefined} axisOrientation The axis orientation as - * specified in Proj4. If this is not provided, the projection's axis - * orientation will be used if `projection` is not overridden (i.e. the - * projection defined in the data is used). Otherwise the default is 'enu'. * @property {boolean|undefined} curve Write gml:Curve instead of * gml:LineString elements. This also affects the elements in multi-part * geometries. Default is `false´. This only applies to GML version 3. @@ -380,11 +376,6 @@ * default is `true´. This only applies to GML version 3. * @property {string|undefined} schemaLocation Optional schemaLocation to use * when writing out the GML, this will override the default provided. - * @property {string|undefined} srsName URI for spatial reference system. - * This is optional for single part geometries and mandatory for - * collections and multis. If set, the srsName attribute will be written - * for all geometries. Default is null. For reading only, no `srsName` needs - * to be provided. * @property {boolean|undefined} surface Write gml:Surface instead of * gml:Polygon elements. This also affects the elements in multi-part * geometries. Default is `false´. This only applies to GML version 3. diff --git a/src/ol/parser/ogc/gml.js b/src/ol/parser/ogc/gml.js index a7015a7ee6..5418c33253 100644 --- a/src/ol/parser/ogc/gml.js +++ b/src/ol/parser/ogc/gml.js @@ -28,8 +28,6 @@ goog.require('ol.proj'); ol.parser.ogc.GML = function(opt_options) { var options = /** @type {ol.parser.GMLOptions} */ (goog.isDef(opt_options) ? opt_options : {}); - this.axisOrientation = goog.isDef(options.axisOrientation) ? - options.axisOrientation : null; this.extractAttributes = goog.isDef(options.extractAttributes) ? options.extractAttributes : true; this.surface = goog.isDef(options.surface) ? @@ -40,20 +38,18 @@ ol.parser.ogc.GML = function(opt_options) { options.multiCurve : true; this.multiSurface = goog.isDef(options.multiSurface) ? options.multiSurface : true; - this.srsName = goog.isDef(options.srsName) ? - options.srsName : null; /** - * @private + * @protected * @type {string|undefined} */ - this.srsName_; + this.srsName; /** - * @private + * @protected * @type {string|undefined} */ - this.axisOrientation_; + this.axisOrientation; if (goog.isDef(options.schemaLocation)) { this.schemaLocation = options.schemaLocation; @@ -319,21 +315,21 @@ ol.parser.ogc.GML = function(opt_options) { // TODO: Deal with GML documents that do not have the same SRS for all // geometries. var srsName; - if (!goog.isDef(this.srsName_)) { + if (!goog.isDef(this.srsName)) { for (var i = node.childNodes.length - 1; i >= 0; --i) { var child = node.childNodes[i]; if (child.nodeType == 1) { srsName = child.getAttribute('srsName'); if (goog.isDef(srsName)) { - this.srsName_ = srsName; + this.srsName = srsName; } break; } } } - if (!goog.isDef(this.axisOrientation_)) { + if (!goog.isDef(this.axisOrientation)) { if (goog.isDef(srsName)) { - this.axisOrientation_ = ol.proj.get(srsName).getAxisOrientation(); + this.axisOrientation = ol.proj.get(srsName).getAxisOrientation(); } } this.readChildNodes(node, obj); @@ -349,9 +345,9 @@ ol.parser.ogc.GML = function(opt_options) { } this.writers = { 'http://www.opengis.net/gml': { - 'featureMember': function(feature) { + 'featureMember': function(obj) { var node = this.createElementNS('gml:featureMember'); - this.writeNode('_typeName', feature, this.featureNS, node); + this.writeNode('_typeName', obj, this.featureNS, node); return node; }, 'MultiPoint': function(geometry) { @@ -468,8 +464,9 @@ ol.parser.ogc.GML = function(opt_options) { } else if (type === ol.geom.GeometryType.GEOMETRYCOLLECTION) { child = this.writeNode('GeometryCollection', geometry, null, node); } - if (goog.isDef(this.srsName)) { - this.setAttributeNS(child, null, 'srsName', this.srsName); + if (goog.isDef(this.getSrsName())) { + this.setAttributeNS(child, null, 'srsName', + ol.proj.get(this.getSrsName()).getCode()); } return node; }, @@ -491,16 +488,16 @@ goog.inherits(ol.parser.ogc.GML, ol.parser.XML); * @return {string?} Axis orientation. */ ol.parser.ogc.GML.prototype.getAxisOrientation = function() { - return goog.isDef(this.axisOrientation_) ? this.axisOrientation_ : 'enu'; + return goog.isDef(this.axisOrientation) ? this.axisOrientation : 'enu'; }; /** - * @return {string?} SRS name. + * @return {string|undefined} SRS name. */ ol.parser.ogc.GML.prototype.getSrsName = function() { - return this.srsName_; -} + return this.srsName; +}; /** @@ -514,13 +511,10 @@ ol.parser.ogc.GML.prototype.read = function(data) { if (data && data.nodeType == 9) { data = data.documentElement; } - this.srsName_ = goog.isNull(this.srsName) ? undefined : this.srsName; - this.axisOrientation_ = goog.isNull(this.axisOrientation) ? - undefined : this.axisOrientation; var obj = /** @type {ol.parser.ReadFeaturesResult} */ ({features: [], metadata: {}}); this.readNode(data, obj, true); - obj.metadata.projection = this.srsName_; + obj.metadata.projection = this.srsName; return obj; }; diff --git a/src/ol/parser/ogc/gml_v2.js b/src/ol/parser/ogc/gml_v2.js index d704830209..113e65924d 100644 --- a/src/ol/parser/ogc/gml_v2.js +++ b/src/ol/parser/ogc/gml_v2.js @@ -3,6 +3,7 @@ goog.provide('ol.parser.ogc.GML_v2'); goog.require('goog.array'); goog.require('goog.object'); goog.require('ol.parser.ogc.GML'); +goog.require('ol.proj'); @@ -112,17 +113,21 @@ goog.inherits(ol.parser.ogc.GML_v2, ol.parser.ogc.GML); /** - * @param {Object} obj Object structure to write out as XML. - * @return {string} An string representing the XML document. + * @param {ol.parser.ReadFeaturesResult} obj Object structure to write out as + * GML. + * @return {string} A string representing the GML document. */ ol.parser.ogc.GML_v2.prototype.write = function(obj) { + if (goog.isDef(obj.metadata)) { + this.srsName = goog.isDef(obj.metadata.projection) ? + ol.proj.get(obj.metadata.projection).getCode() : undefined; + } var root = this.writeNode('FeatureCollection', obj.features, 'http://www.opengis.net/wfs'); this.setAttributeNS( root, 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:schemaLocation', this.schemaLocation); - this.srsName_ = goog.isNull(this.srsName) ? undefined : this.srsName; - this.axisOrientation_ = goog.isNull(this.axisOrientation) ? - undefined : this.axisOrientation; - return this.serialize(root); + var gml = this.serialize(root); + delete this.srsName; + return gml; }; diff --git a/src/ol/parser/ogc/gml_v3.js b/src/ol/parser/ogc/gml_v3.js index 8d7ebf8aca..a7f9096cac 100644 --- a/src/ol/parser/ogc/gml_v3.js +++ b/src/ol/parser/ogc/gml_v3.js @@ -4,6 +4,7 @@ goog.require('goog.array'); goog.require('goog.object'); goog.require('ol.geom.GeometryType'); goog.require('ol.parser.ogc.GML'); +goog.require('ol.proj'); @@ -56,7 +57,8 @@ ol.parser.ogc.GML_v3 = function(opt_options) { child = this.writeNode('MultiGeometry', geometry, null, node); } if (goog.isDef(this.getSrsName())) { - this.setAttributeNS(child, null, 'srsName', this.getSrsName()); + this.setAttributeNS(child, null, 'srsName', + ol.proj.get(this.getSrsName()).getCode()); } return node; }; @@ -412,12 +414,15 @@ goog.inherits(ol.parser.ogc.GML_v3, ol.parser.ogc.GML); * @return {string} An string representing the XML document. */ ol.parser.ogc.GML_v3.prototype.write = function(obj) { + if (goog.isDef(obj.metadata)) { + this.srsName = goog.isDef(obj.metadata.projection) ? + ol.proj.get(obj.metadata.projection).getCode() : undefined; + } var root = this.writeNode('featureMembers', obj.features); this.setAttributeNS( root, 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:schemaLocation', this.schemaLocation); - this.srsName_ = goog.isNull(this.srsName) ? undefined : this.srsName; - this.axisOrientation_ = goog.isNull(this.axisOrientation) ? - undefined : this.axisOrientation; - return this.serialize(root); + var gml = this.serialize(root); + delete this.srsName; + return gml; }; diff --git a/test/spec/ol/parser/ogc/gml_v2.test.js b/test/spec/ol/parser/ogc/gml_v2.test.js index 413e501fd1..0a4f6596ed 100644 --- a/test/spec/ol/parser/ogc/gml_v2.test.js +++ b/test/spec/ol/parser/ogc/gml_v2.test.js @@ -18,12 +18,12 @@ describe('ol.parser.gml_v2', function() { var url = 'spec/ol/parser/ogc/xml/gml_v2/point-coordinates.xml'; afterLoadXml(url, function(xml) { var obj = parser.read(xml); - parser.srsName = 'foo'; var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); - parser.srsName = null; expect(obj.geometry.type).to.eql('point'); expect(obj.geometry.coordinates).to.eql([1, 2]); done(); @@ -46,12 +46,12 @@ describe('ol.parser.gml_v2', function() { var url = 'spec/ol/parser/ogc/xml/gml_v2/multipoint-coordinates.xml'; afterLoadXml(url, function(xml) { var obj = parser.read(xml); - parser.srsName = 'foo'; var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); - parser.srsName = null; expect(obj.geometry.type).to.eql('multipoint'); expect(obj.geometry.parts.length).to.eql(3); expect(obj.geometry.parts[0].type).to.eql('point'); @@ -75,12 +75,12 @@ describe('ol.parser.gml_v2', function() { var url = 'spec/ol/parser/ogc/xml/gml_v2/linestring-coordinates.xml'; afterLoadXml(url, function(xml) { var obj = parser.read(xml); - parser.srsName = 'foo'; var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); - parser.srsName = null; expect(obj.geometry.type).to.eql('linestring'); expect(obj.geometry.coordinates.length).to.eql(2); expect(obj.geometry.coordinates).to.eql([[1, 2], [3, 4]]); @@ -103,12 +103,12 @@ describe('ol.parser.gml_v2', function() { var url = 'spec/ol/parser/ogc/xml/gml_v2/multilinestring-coordinates.xml'; afterLoadXml(url, function(xml) { var obj = parser.read(xml); - parser.srsName = 'foo'; var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); - parser.srsName = null; expect(obj.geometry.type).to.eql('multilinestring'); expect(obj.geometry.parts.length).to.eql(2); expect(obj.geometry.parts[0].type).to.eql('linestring'); @@ -137,12 +137,12 @@ describe('ol.parser.gml_v2', function() { var url = 'spec/ol/parser/ogc/xml/gml_v2/polygon-coordinates.xml'; afterLoadXml(url, function(xml) { var obj = parser.read(xml); - parser.srsName = 'foo'; var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); - parser.srsName = null; expect(obj.geometry.type).to.eql('polygon'); done(); }); @@ -161,12 +161,12 @@ describe('ol.parser.gml_v2', function() { var url = 'spec/ol/parser/ogc/xml/gml_v2/multipolygon-coordinates.xml'; afterLoadXml(url, function(xml) { var obj = parser.read(xml); - parser.srsName = 'foo'; var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); - parser.srsName = null; expect(obj.geometry.type).to.eql('multipolygon'); expect(obj.geometry.parts.length).to.eql(2); expect(obj.geometry.parts[0].type).to.eql('polygon'); @@ -177,12 +177,13 @@ describe('ol.parser.gml_v2', function() { var url = 'spec/ol/parser/ogc/xml/gml_v2/' + 'geometrycollection-coordinates.xml'; afterLoadXml(url, function(xml) { - var p = new ol.parser.ogc.GML_v2({srsName: 'foo', - featureNS: 'http://foo'}); + var p = new ol.parser.ogc.GML_v2({featureNS: 'http://foo'}); var obj = p.read(xml); var geom = p.createGeometry_({geometry: obj.geometry}); + p.srsName = 'EPSG:4326'; var node = p.featureNSWiters_['_geometry'].apply(p, [geom]).firstChild; + delete p.srsName; expect(goog.dom.xml.loadXml(p.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('geometrycollection'); expect(obj.geometry.parts.length).to.eql(3); @@ -222,12 +223,12 @@ describe('ol.parser.gml_v2', function() { var url = 'spec/ol/parser/ogc/xml/gml_v2/linearring-coordinates.xml'; afterLoadXml(url, function(xml) { var obj = parser.read(xml); - parser.srsName = 'foo'; var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); - parser.srsName = null; expect(obj.geometry.type).to.eql('linearring'); expect(obj.geometry.coordinates).to.eql([[1, 2], [3, 4], [5, 6], [1, 2]]); @@ -243,12 +244,14 @@ describe('ol.parser.gml_v2', function() { 'http://www.opengis.net/wfs http://demo.opengeo.org/' + 'geoserver/schemas/wfs/1.0.0/WFS-basic.xsd'; var p = new ol.parser.ogc.GML_v2({ - axisOrientation: 'enu', featureType: 'states', featureNS: 'http://www.openplans.org/topp', schemaLocation: schemaLoc}); + // overwrite the axis orientation of the projection, since WFS 1.0.0 + // always uses enu + p.axisOrientation = 'enu'; var obj = p.read(xml); - p.srsName = 'http://www.opengis.net/gml/srs/epsg.xml#4326'; + delete p.axisOrientation; var output = p.write(obj); expect(goog.dom.xml.loadXml(output)).to.xmleql(xml); expect(obj.features.length).to.eql(3); @@ -329,3 +332,5 @@ goog.require('ol.parser.ogc.GML_v2'); goog.require('ol.geom.MultiLineString'); goog.require('ol.geom.MultiPoint'); goog.require('ol.geom.MultiPolygon'); +goog.require('ol.proj'); +goog.require('ol.proj.EPSG4326'); diff --git a/test/spec/ol/parser/ogc/gml_v3.test.js b/test/spec/ol/parser/ogc/gml_v3.test.js index 3bd932d468..da829d0e93 100644 --- a/test/spec/ol/parser/ogc/gml_v3.test.js +++ b/test/spec/ol/parser/ogc/gml_v3.test.js @@ -2,8 +2,7 @@ goog.provide('ol.test.parser.gml_v3'); describe('ol.parser.gml_v3', function() { - var parser = new ol.parser.ogc.GML_v3( - {srsName: 'foo', axisOrientation: 'enu'}); + var parser = new ol.parser.ogc.GML_v3(); describe('Test GML v3 parser', function() { it('Envelope read correctly', function(done) { @@ -19,8 +18,10 @@ describe('ol.parser.gml_v3', function() { afterLoadXml(url, function(xml) { var obj = parser.read(xml); var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('linearring'); expect(obj.geometry.coordinates).to.eql([[1, 2], [3, 4], [5, 6], @@ -33,8 +34,10 @@ describe('ol.parser.gml_v3', function() { afterLoadXml(url, function(xml) { var obj = parser.read(xml); var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('linestring'); expect(obj.geometry.coordinates).to.eql([[1, 2], [3, 4]]); @@ -54,11 +57,13 @@ describe('ol.parser.gml_v3', function() { it('Curve read / written correctly', function(done) { var url = 'spec/ol/parser/ogc/xml/gml_v3/curve.xml'; afterLoadXml(url, function(xml) { - var p = new ol.parser.ogc.GML_v3({curve: true, srsName: 'foo'}); + var p = new ol.parser.ogc.GML_v3({curve: true}); var obj = p.read(xml); var geom = p.createGeometry_({geometry: obj.geometry}); + p.srsName = 'EPSG:4326'; var node = p.featureNSWiters_['_geometry'].apply(p, [geom]).firstChild; + delete p.srsName; expect(goog.dom.xml.loadXml(p.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('linestring'); expect(obj.geometry.coordinates).to.eql([[1, 2], [3, 4]]); @@ -79,11 +84,13 @@ describe('ol.parser.gml_v3', function() { it('MultiLineString singular read / written correctly', function(done) { var url = 'spec/ol/parser/ogc/xml/gml_v3/multilinestring-singular.xml'; afterLoadXml(url, function(xml) { - var p = new ol.parser.ogc.GML_v3({multiCurve: false, srsName: 'foo'}); + var p = new ol.parser.ogc.GML_v3({multiCurve: false}); var obj = p.read(xml); var geom = p.createGeometry_({geometry: obj.geometry}); + p.srsName = 'EPSG:4326'; var node = p.featureNSWiters_['_geometry'].apply(p, [geom]).firstChild; + delete p.srsName; expect(goog.dom.xml.loadXml(p.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('multilinestring'); expect(obj.geometry.parts.length).to.eql(2); @@ -96,8 +103,10 @@ describe('ol.parser.gml_v3', function() { afterLoadXml(url, function(xml) { var obj = parser.read(xml); var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('multilinestring'); expect(obj.geometry.parts.length).to.eql(2); @@ -109,11 +118,13 @@ describe('ol.parser.gml_v3', function() { it('MultiCurve curve read / written correctly', function(done) { var url = 'spec/ol/parser/ogc/xml/gml_v3/multicurve-curve.xml'; afterLoadXml(url, function(xml) { - var p = new ol.parser.ogc.GML_v3({curve: true, srsName: 'foo'}); + var p = new ol.parser.ogc.GML_v3({curve: true}); var obj = p.read(xml); var geom = p.createGeometry_({geometry: obj.geometry}); + p.srsName = 'EPSG:4326'; var node = p.featureNSWiters_['_geometry'].apply(p, [geom]).firstChild; + delete p.srsName; expect(goog.dom.xml.loadXml(p.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('multilinestring'); expect(obj.geometry.parts.length).to.eql(2); @@ -138,8 +149,10 @@ describe('ol.parser.gml_v3', function() { afterLoadXml(url, function(xml) { var obj = parser.read(xml); var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('multipoint'); expect(obj.geometry.parts.length).to.eql(3); @@ -161,11 +174,13 @@ describe('ol.parser.gml_v3', function() { it('MultiPolygon singular read / written correctly', function(done) { var url = 'spec/ol/parser/ogc/xml/gml_v3/multipolygon-singular.xml'; afterLoadXml(url, function(xml) { - var p = new ol.parser.ogc.GML_v3({multiSurface: false, srsName: 'foo'}); + var p = new ol.parser.ogc.GML_v3({multiSurface: false}); var obj = p.read(xml); var geom = p.createGeometry_({geometry: obj.geometry}); + p.srsName = 'EPSG:4326'; var node = p.featureNSWiters_['_geometry'].apply(p, [geom]).firstChild; + delete p.srsName; expect(goog.dom.xml.loadXml(p.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('multipolygon'); expect(obj.geometry.parts.length).to.eql(2); @@ -188,8 +203,10 @@ describe('ol.parser.gml_v3', function() { afterLoadXml(url, function(xml) { var obj = parser.read(xml); var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('multipolygon'); expect(obj.geometry.parts.length).to.eql(2); @@ -200,11 +217,13 @@ describe('ol.parser.gml_v3', function() { it('MultiSurface surface read / written correctly', function(done) { var url = 'spec/ol/parser/ogc/xml/gml_v3/multisurface-surface.xml'; afterLoadXml(url, function(xml) { - var p = new ol.parser.ogc.GML_v3({surface: true, srsName: 'foo'}); + var p = new ol.parser.ogc.GML_v3({surface: true}); var obj = p.read(xml); var geom = p.createGeometry_({geometry: obj.geometry}); + p.srsName = 'EPSG:4326'; var node = p.featureNSWiters_['_geometry'].apply(p, [geom]).firstChild; + delete p.srsName; expect(goog.dom.xml.loadXml(p.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('multipolygon'); expect(obj.geometry.parts.length).to.eql(2); @@ -217,8 +236,10 @@ describe('ol.parser.gml_v3', function() { afterLoadXml(url, function(xml) { var obj = parser.read(xml); var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('point'); expect(obj.geometry.coordinates).to.eql([1, 2]); @@ -230,8 +251,10 @@ describe('ol.parser.gml_v3', function() { afterLoadXml(url, function(xml) { var obj = parser.read(xml); var geom = parser.createGeometry_({geometry: obj.geometry}); + parser.srsName = 'EPSG:4326'; var node = parser.featureNSWiters_['_geometry'].apply(parser, [geom]).firstChild; + delete parser.srsName; expect(goog.dom.xml.loadXml(parser.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('polygon'); done(); @@ -240,11 +263,13 @@ describe('ol.parser.gml_v3', function() { it('Surface read / written correctly', function(done) { var url = 'spec/ol/parser/ogc/xml/gml_v3/surface.xml'; afterLoadXml(url, function(xml) { - var p = new ol.parser.ogc.GML_v3({surface: true, srsName: 'foo'}); + var p = new ol.parser.ogc.GML_v3({surface: true}); var obj = p.read(xml); var geom = p.createGeometry_({geometry: obj.geometry}); + p.srsName = 'EPSG:4326'; var node = p.featureNSWiters_['_geometry'].apply(p, [geom]).firstChild; + delete p.srsName; expect(goog.dom.xml.loadXml(p.serialize(node))).to.xmleql(xml); expect(obj.geometry.type).to.eql('polygon'); done(); @@ -259,7 +284,6 @@ describe('ol.parser.gml_v3', function() { 'http://www.opengis.net/gml ' + 'http://schemas.opengis.net/gml/3.2.1/gml.xsd'; var p = new ol.parser.ogc.GML_v3({schemaLocation: schemaLoc}); - debugger var obj = p.read(xml); var output = p.write(obj); expect(goog.dom.xml.loadXml(output)).to.xmleql(xml); @@ -283,7 +307,6 @@ describe('ol.parser.gml_v3', function() { it('FeatureCollection from WFS read correctly', function(done) { var url = 'spec/ol/parser/ogc/xml/gml_v3/topp-states-wfs.xml'; afterLoadXml(url, function(xml) { - parser.srsName = null; var obj = parser.read(xml); expect(obj.features.length).to.eql(3); var feature = obj.features[0]; @@ -298,7 +321,6 @@ describe('ol.parser.gml_v3', function() { expect(attributes['LAND_KM']).to.eql('143986.61'); expect(ol.proj.get(obj.metadata.projection) instanceof ol.proj.EPSG4326) .to.be.ok(); - parser.srsName = "foo"; done(); }); }); @@ -344,3 +366,5 @@ describe('ol.parser.gml_v3', function() { goog.require('goog.dom.xml'); goog.require('ol.geom.MultiPolygon'); goog.require('ol.parser.ogc.GML_v3'); +goog.require('ol.proj'); +goog.require('ol.proj.EPSG4326'); diff --git a/test/spec/ol/parser/ogc/xml/gml_v2/geometrycollection-coordinates.xml b/test/spec/ol/parser/ogc/xml/gml_v2/geometrycollection-coordinates.xml index bec4cf48c4..9ac91d395f 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v2/geometrycollection-coordinates.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v2/geometrycollection-coordinates.xml @@ -1,16 +1,16 @@ - + - + 1,2 - + 1,2 3,4 - + 1,2 3,2 3,4 1,2 diff --git a/test/spec/ol/parser/ogc/xml/gml_v2/linearring-coordinates.xml b/test/spec/ol/parser/ogc/xml/gml_v2/linearring-coordinates.xml index a069c8d7dc..8dc456b0d8 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v2/linearring-coordinates.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v2/linearring-coordinates.xml @@ -1,3 +1,3 @@ - + 1,2 3,4 5,6 1,2 diff --git a/test/spec/ol/parser/ogc/xml/gml_v2/linestring-coordinates.xml b/test/spec/ol/parser/ogc/xml/gml_v2/linestring-coordinates.xml index 0831331f0b..a2c25f91dc 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v2/linestring-coordinates.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v2/linestring-coordinates.xml @@ -1,3 +1,3 @@ - + 1,2 3,4 diff --git a/test/spec/ol/parser/ogc/xml/gml_v2/multilinestring-coordinates.xml b/test/spec/ol/parser/ogc/xml/gml_v2/multilinestring-coordinates.xml index a5d87dbf0c..0e143bf99d 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v2/multilinestring-coordinates.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v2/multilinestring-coordinates.xml @@ -1,4 +1,4 @@ - + 1,2 2,3 diff --git a/test/spec/ol/parser/ogc/xml/gml_v2/multipoint-coordinates.xml b/test/spec/ol/parser/ogc/xml/gml_v2/multipoint-coordinates.xml index 07063c8a73..fedf5403a3 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v2/multipoint-coordinates.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v2/multipoint-coordinates.xml @@ -1,4 +1,4 @@ - + 1,2 diff --git a/test/spec/ol/parser/ogc/xml/gml_v2/multipolygon-coordinates.xml b/test/spec/ol/parser/ogc/xml/gml_v2/multipolygon-coordinates.xml index 26de3d3422..a5c3b123f2 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v2/multipolygon-coordinates.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v2/multipolygon-coordinates.xml @@ -1,4 +1,4 @@ - + diff --git a/test/spec/ol/parser/ogc/xml/gml_v2/point-coord.xml b/test/spec/ol/parser/ogc/xml/gml_v2/point-coord.xml index 28e31b3aa8..47e4bedfbe 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v2/point-coord.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v2/point-coord.xml @@ -1,4 +1,4 @@ - + 1 2 diff --git a/test/spec/ol/parser/ogc/xml/gml_v2/point-coordinates.xml b/test/spec/ol/parser/ogc/xml/gml_v2/point-coordinates.xml index 1e3d56dd8e..2d987cc20e 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v2/point-coordinates.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v2/point-coordinates.xml @@ -1,3 +1,3 @@ - + 1,2 diff --git a/test/spec/ol/parser/ogc/xml/gml_v2/polygon-coordinates.xml b/test/spec/ol/parser/ogc/xml/gml_v2/polygon-coordinates.xml index 5a5085e3cb..e86b75be60 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v2/polygon-coordinates.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v2/polygon-coordinates.xml @@ -1,4 +1,4 @@ - + 1,2 5,2 5,6 1,2 diff --git a/test/spec/ol/parser/ogc/xml/gml_v3/curve.xml b/test/spec/ol/parser/ogc/xml/gml_v3/curve.xml index c12b9ccab7..4dc1abccbe 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v3/curve.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v3/curve.xml @@ -1,4 +1,4 @@ - + 1 2 3 4 diff --git a/test/spec/ol/parser/ogc/xml/gml_v3/linearring.xml b/test/spec/ol/parser/ogc/xml/gml_v3/linearring.xml index 49d966a527..dc2a1fbd31 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v3/linearring.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v3/linearring.xml @@ -1,3 +1,3 @@ - + 1 2 3 4 5 6 1 2 diff --git a/test/spec/ol/parser/ogc/xml/gml_v3/linestring.xml b/test/spec/ol/parser/ogc/xml/gml_v3/linestring.xml index b7f67f80bb..b6642c1af9 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v3/linestring.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v3/linestring.xml @@ -1,3 +1,3 @@ - + 1 2 3 4 diff --git a/test/spec/ol/parser/ogc/xml/gml_v3/multicurve-curve.xml b/test/spec/ol/parser/ogc/xml/gml_v3/multicurve-curve.xml index fdd79f1701..13172f8ba9 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v3/multicurve-curve.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v3/multicurve-curve.xml @@ -1,4 +1,4 @@ - + diff --git a/test/spec/ol/parser/ogc/xml/gml_v3/multicurve-singular.xml b/test/spec/ol/parser/ogc/xml/gml_v3/multicurve-singular.xml index 03e71f0d99..502392356b 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v3/multicurve-singular.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v3/multicurve-singular.xml @@ -1,4 +1,4 @@ - + 1 2 2 3 diff --git a/test/spec/ol/parser/ogc/xml/gml_v3/multilinestring-singular.xml b/test/spec/ol/parser/ogc/xml/gml_v3/multilinestring-singular.xml index 6877f95ea4..34a1f281bb 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v3/multilinestring-singular.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v3/multilinestring-singular.xml @@ -1,4 +1,4 @@ - + 1 2 2 3 diff --git a/test/spec/ol/parser/ogc/xml/gml_v3/multipoint-singular.xml b/test/spec/ol/parser/ogc/xml/gml_v3/multipoint-singular.xml index 8ee3026634..43f3bf6599 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v3/multipoint-singular.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v3/multipoint-singular.xml @@ -1,4 +1,4 @@ - + 1 2 diff --git a/test/spec/ol/parser/ogc/xml/gml_v3/multipolygon-singular.xml b/test/spec/ol/parser/ogc/xml/gml_v3/multipolygon-singular.xml index 9ea5339d87..05b0de054a 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v3/multipolygon-singular.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v3/multipolygon-singular.xml @@ -1,4 +1,4 @@ - + diff --git a/test/spec/ol/parser/ogc/xml/gml_v3/multisurface-singular.xml b/test/spec/ol/parser/ogc/xml/gml_v3/multisurface-singular.xml index bf6eb737af..c7ed5b6e8c 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v3/multisurface-singular.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v3/multisurface-singular.xml @@ -1,4 +1,4 @@ - + diff --git a/test/spec/ol/parser/ogc/xml/gml_v3/multisurface-surface.xml b/test/spec/ol/parser/ogc/xml/gml_v3/multisurface-surface.xml index 7fe394769f..f2291646c4 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v3/multisurface-surface.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v3/multisurface-surface.xml @@ -1,4 +1,4 @@ - + diff --git a/test/spec/ol/parser/ogc/xml/gml_v3/point.xml b/test/spec/ol/parser/ogc/xml/gml_v3/point.xml index 8ff86123bb..864891c0c1 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v3/point.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v3/point.xml @@ -1,3 +1,3 @@ - + 1 2 diff --git a/test/spec/ol/parser/ogc/xml/gml_v3/polygon.xml b/test/spec/ol/parser/ogc/xml/gml_v3/polygon.xml index e9c467e02b..8cc2c1818f 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v3/polygon.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v3/polygon.xml @@ -1,4 +1,4 @@ - + 1 2 3 2 3 4 1 2 diff --git a/test/spec/ol/parser/ogc/xml/gml_v3/surface.xml b/test/spec/ol/parser/ogc/xml/gml_v3/surface.xml index 4bfea73303..3292537b0f 100644 --- a/test/spec/ol/parser/ogc/xml/gml_v3/surface.xml +++ b/test/spec/ol/parser/ogc/xml/gml_v3/surface.xml @@ -1,4 +1,4 @@ - +