Move GML subclasses to ol.format namespace

to avoid issue with ol.format.GML alias
ol.format.GMLBase
ol.format.GML2
ol.format.GML3
This commit is contained in:
Florent gravin
2014-09-24 14:54:26 +02:00
parent 607543e4e7
commit 678c66f50c
7 changed files with 269 additions and 254 deletions
+1 -1
View File
@@ -1649,7 +1649,7 @@ olx.format.WFSWriteGetFeatureOptions.prototype.geometryName;
/** /**
* GML format to use within the WFS format. * GML format to use within the WFS format.
* @type {ol.format.GML|undefined} * @type {ol.format.GMLBase|undefined}
* @api * @api
*/ */
olx.format.WFSWriteGetFeatureOptions.prototype.gmlFormat; olx.format.WFSWriteGetFeatureOptions.prototype.gmlFormat;
+69 -62
View File
@@ -1,7 +1,7 @@
// FIXME Envelopes should not be treated as geometries! readEnvelope_ is part // FIXME Envelopes should not be treated as geometries! readEnvelope_ is part
// of GEOMETRY_PARSERS_ and methods using GEOMETRY_PARSERS_ do not expect // of GEOMETRY_PARSERS_ and methods using GEOMETRY_PARSERS_ do not expect
// envelopes/extents, only geometries! // envelopes/extents, only geometries!
goog.provide('ol.format.GML'); goog.provide('ol.format.GMLBase');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.dom'); goog.require('goog.dom');
@@ -34,9 +34,9 @@ goog.require('ol.xml');
* @param {olx.format.GMLOptions=} opt_options * @param {olx.format.GMLOptions=} opt_options
* Optional configuration object. * Optional configuration object.
* @extends {ol.format.XMLFeature} * @extends {ol.format.XMLFeature}
* @api stable * @api
*/ */
ol.format.GML = function(opt_options) { ol.format.GMLBase = function(opt_options) {
var options = /** @type {olx.format.GMLOptions} */ var options = /** @type {olx.format.GMLOptions} */
(goog.isDef(opt_options) ? opt_options : {}); (goog.isDef(opt_options) ? opt_options : {});
@@ -67,7 +67,7 @@ ol.format.GML = function(opt_options) {
goog.base(this); goog.base(this);
}; };
goog.inherits(ol.format.GML, ol.format.XMLFeature); goog.inherits(ol.format.GMLBase, ol.format.XMLFeature);
/** /**
@@ -76,13 +76,13 @@ goog.inherits(ol.format.GML, ol.format.XMLFeature);
* @return {Array.<ol.Feature>} Features. * @return {Array.<ol.Feature>} Features.
* @private * @private
*/ */
ol.format.GML.prototype.readFeatures_ = function(node, objectStack) { ol.format.GMLBase.prototype.readFeatures_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
var localName = ol.xml.getLocalName(node); var localName = ol.xml.getLocalName(node);
var features; var features;
if (localName == 'FeatureCollection') { if (localName == 'FeatureCollection') {
features = ol.xml.pushParseAndPop(null, features = ol.xml.pushParseAndPop(null,
ol.format.GML.FEATURE_COLLECTION_PARSERS, node, ol.format.GMLBase.FEATURE_COLLECTION_PARSERS, node,
objectStack, this); objectStack, this);
} else if (localName == 'featureMembers' || localName == 'featureMember') { } else if (localName == 'featureMembers' || localName == 'featureMember') {
var context = objectStack[0]; var context = objectStack[0];
@@ -112,11 +112,12 @@ ol.format.GML.prototype.readFeatures_ = function(node, objectStack) {
/** /**
* @type {Object.<string, Object.<string, Object>>} * @type {Object.<string, Object.<string, Object>>}
*/ */
ol.format.GML.FEATURE_COLLECTION_PARSERS = { ol.format.GMLBase.FEATURE_COLLECTION_PARSERS = {
'http://www.opengis.net/gml': { 'http://www.opengis.net/gml': {
'featureMember': ol.xml.makeArrayPusher( 'featureMember': ol.xml.makeArrayPusher(
ol.format.GML.prototype.readFeatures_), ol.format.GMLBase.prototype.readFeatures_),
'featureMembers': ol.xml.makeReplacer(ol.format.GML.prototype.readFeatures_) 'featureMembers': ol.xml.makeReplacer(
ol.format.GMLBase.prototype.readFeatures_)
} }
}; };
@@ -126,7 +127,7 @@ ol.format.GML.FEATURE_COLLECTION_PARSERS = {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @return {ol.geom.Geometry|undefined} Geometry. * @return {ol.geom.Geometry|undefined} Geometry.
*/ */
ol.format.GML.prototype.readGeometryElement = function(node, objectStack) { ol.format.GMLBase.prototype.readGeometryElement = function(node, objectStack) {
var context = objectStack[0]; var context = objectStack[0];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
goog.object.set(context, 'srsName', goog.object.set(context, 'srsName',
@@ -148,7 +149,7 @@ ol.format.GML.prototype.readGeometryElement = function(node, objectStack) {
* @return {ol.Feature} Feature. * @return {ol.Feature} Feature.
* @private * @private
*/ */
ol.format.GML.prototype.readFeature_ = function(node, objectStack) { ol.format.GMLBase.prototype.readFeature_ = function(node, objectStack) {
var n; var n;
var fid = node.getAttribute('fid') || var fid = node.getAttribute('fid') ||
ol.xml.getAttributeNS(node, 'http://www.opengis.net/gml', 'id'); ol.xml.getAttributeNS(node, 'http://www.opengis.net/gml', 'id');
@@ -186,7 +187,7 @@ ol.format.GML.prototype.readFeature_ = function(node, objectStack) {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @return {ol.geom.Point|undefined} Point. * @return {ol.geom.Point|undefined} Point.
*/ */
ol.format.GML.prototype.readPoint = function(node, objectStack) { ol.format.GMLBase.prototype.readPoint = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'Point'); goog.asserts.assert(node.localName == 'Point');
var flatCoordinates = var flatCoordinates =
@@ -205,12 +206,12 @@ ol.format.GML.prototype.readPoint = function(node, objectStack) {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @return {ol.geom.MultiPoint|undefined} MultiPoint. * @return {ol.geom.MultiPoint|undefined} MultiPoint.
*/ */
ol.format.GML.prototype.readMultiPoint = function(node, objectStack) { ol.format.GMLBase.prototype.readMultiPoint = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'MultiPoint'); goog.asserts.assert(node.localName == 'MultiPoint');
var coordinates = ol.xml.pushParseAndPop( var coordinates = ol.xml.pushParseAndPop(
/** @type {Array.<Array.<number>>} */ ([]), /** @type {Array.<Array.<number>>} */ ([]),
ol.format.GML.MULTIPOINT_PARSERS_, node, objectStack, this); ol.format.GMLBase.MULTIPOINT_PARSERS_, node, objectStack, this);
if (goog.isDef(coordinates)) { if (goog.isDef(coordinates)) {
return new ol.geom.MultiPoint(coordinates); return new ol.geom.MultiPoint(coordinates);
} else { } else {
@@ -224,12 +225,12 @@ ol.format.GML.prototype.readMultiPoint = function(node, objectStack) {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @return {ol.geom.MultiLineString|undefined} MultiLineString. * @return {ol.geom.MultiLineString|undefined} MultiLineString.
*/ */
ol.format.GML.prototype.readMultiLineString = function(node, objectStack) { ol.format.GMLBase.prototype.readMultiLineString = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'MultiLineString'); goog.asserts.assert(node.localName == 'MultiLineString');
var lineStrings = ol.xml.pushParseAndPop( var lineStrings = ol.xml.pushParseAndPop(
/** @type {Array.<ol.geom.LineString>} */ ([]), /** @type {Array.<ol.geom.LineString>} */ ([]),
ol.format.GML.MULTILINESTRING_PARSERS_, node, objectStack, this); ol.format.GMLBase.MULTILINESTRING_PARSERS_, node, objectStack, this);
if (goog.isDef(lineStrings)) { if (goog.isDef(lineStrings)) {
var multiLineString = new ol.geom.MultiLineString(null); var multiLineString = new ol.geom.MultiLineString(null);
multiLineString.setLineStrings(lineStrings); multiLineString.setLineStrings(lineStrings);
@@ -245,12 +246,12 @@ ol.format.GML.prototype.readMultiLineString = function(node, objectStack) {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @return {ol.geom.MultiPolygon|undefined} MultiPolygon. * @return {ol.geom.MultiPolygon|undefined} MultiPolygon.
*/ */
ol.format.GML.prototype.readMultiPolygon = function(node, objectStack) { ol.format.GMLBase.prototype.readMultiPolygon = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'MultiPolygon'); goog.asserts.assert(node.localName == 'MultiPolygon');
var polygons = ol.xml.pushParseAndPop( var polygons = ol.xml.pushParseAndPop(
/** @type {Array.<ol.geom.Polygon>} */ ([]), /** @type {Array.<ol.geom.Polygon>} */ ([]),
ol.format.GML.MULTIPOLYGON_PARSERS_, node, objectStack, this); ol.format.GMLBase.MULTIPOLYGON_PARSERS_, node, objectStack, this);
if (goog.isDef(polygons)) { if (goog.isDef(polygons)) {
var multiPolygon = new ol.geom.MultiPolygon(null); var multiPolygon = new ol.geom.MultiPolygon(null);
multiPolygon.setPolygons(polygons); multiPolygon.setPolygons(polygons);
@@ -266,24 +267,11 @@ ol.format.GML.prototype.readMultiPolygon = function(node, objectStack) {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @private * @private
*/ */
ol.format.GML.prototype.pointMemberParser_ = function(node, objectStack) { ol.format.GMLBase.prototype.pointMemberParser_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'pointMember' || goog.asserts.assert(node.localName == 'pointMember' ||
node.localName == 'pointMembers'); node.localName == 'pointMembers');
ol.xml.parse(ol.format.GML.POINTMEMBER_PARSERS_, node, objectStack, this); ol.xml.parse(ol.format.GMLBase.POINTMEMBER_PARSERS_,
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
*/
ol.format.GML.prototype.lineStringMemberParser_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'lineStringMember' ||
node.localName == 'lineStringMembers');
ol.xml.parse(ol.format.GML.LINESTRINGMEMBER_PARSERS_,
node, objectStack, this); node, objectStack, this);
}; };
@@ -293,11 +281,28 @@ ol.format.GML.prototype.lineStringMemberParser_ = function(node, objectStack) {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @private * @private
*/ */
ol.format.GML.prototype.polygonMemberParser_ = function(node, objectStack) { ol.format.GMLBase.prototype.lineStringMemberParser_ =
function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'lineStringMember' ||
node.localName == 'lineStringMembers');
ol.xml.parse(ol.format.GMLBase.LINESTRINGMEMBER_PARSERS_,
node, objectStack, this);
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
*/
ol.format.GMLBase.prototype.polygonMemberParser_ =
function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'polygonMember' || goog.asserts.assert(node.localName == 'polygonMember' ||
node.localName == 'polygonMembers'); node.localName == 'polygonMembers');
ol.xml.parse(ol.format.GML.POLYGONMEMBER_PARSERS_, node, objectStack, this); ol.xml.parse(ol.format.GMLBase.POLYGONMEMBER_PARSERS_, node,
objectStack, this);
}; };
@@ -306,7 +311,7 @@ ol.format.GML.prototype.polygonMemberParser_ = function(node, objectStack) {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @return {ol.geom.LineString|undefined} LineString. * @return {ol.geom.LineString|undefined} LineString.
*/ */
ol.format.GML.prototype.readLineString = function(node, objectStack) { ol.format.GMLBase.prototype.readLineString = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'LineString'); goog.asserts.assert(node.localName == 'LineString');
var flatCoordinates = var flatCoordinates =
@@ -327,7 +332,7 @@ ol.format.GML.prototype.readLineString = function(node, objectStack) {
* @private * @private
* @return {Array.<number>|undefined} LinearRing flat coordinates. * @return {Array.<number>|undefined} LinearRing flat coordinates.
*/ */
ol.format.GML.prototype.readFlatLinearRing_ = function(node, objectStack) { ol.format.GMLBase.prototype.readFlatLinearRing_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'LinearRing'); goog.asserts.assert(node.localName == 'LinearRing');
var ring = ol.xml.pushParseAndPop(/** @type {Array.<number>} */(null), var ring = ol.xml.pushParseAndPop(/** @type {Array.<number>} */(null),
@@ -346,7 +351,7 @@ ol.format.GML.prototype.readFlatLinearRing_ = function(node, objectStack) {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @return {ol.geom.LinearRing|undefined} LinearRing. * @return {ol.geom.LinearRing|undefined} LinearRing.
*/ */
ol.format.GML.prototype.readLinearRing = function(node, objectStack) { ol.format.GMLBase.prototype.readLinearRing = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'LinearRing'); goog.asserts.assert(node.localName == 'LinearRing');
var flatCoordinates = var flatCoordinates =
@@ -366,7 +371,7 @@ ol.format.GML.prototype.readLinearRing = function(node, objectStack) {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @return {ol.geom.Polygon|undefined} Polygon. * @return {ol.geom.Polygon|undefined} Polygon.
*/ */
ol.format.GML.prototype.readPolygon = function(node, objectStack) { ol.format.GMLBase.prototype.readPolygon = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'Polygon'); goog.asserts.assert(node.localName == 'Polygon');
var flatLinearRings = ol.xml.pushParseAndPop( var flatLinearRings = ol.xml.pushParseAndPop(
@@ -397,8 +402,8 @@ ol.format.GML.prototype.readPolygon = function(node, objectStack) {
* @private * @private
* @return {Array.<number>} Flat coordinates. * @return {Array.<number>} Flat coordinates.
*/ */
ol.format.GML.prototype.readFlatCoordinatesFromNode_ = function(node, ol.format.GMLBase.prototype.readFlatCoordinatesFromNode_ =
objectStack) { function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
return /** @type {Array.<number>} */ (ol.xml.pushParseAndPop( return /** @type {Array.<number>} */ (ol.xml.pushParseAndPop(
null, null,
@@ -412,12 +417,12 @@ ol.format.GML.prototype.readFlatCoordinatesFromNode_ = function(node,
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.MULTIPOINT_PARSERS_ = { ol.format.GMLBase.MULTIPOINT_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'pointMember': ol.xml.makeArrayPusher( 'pointMember': ol.xml.makeArrayPusher(
ol.format.GML.prototype.pointMemberParser_), ol.format.GMLBase.prototype.pointMemberParser_),
'pointMembers': ol.xml.makeArrayPusher( 'pointMembers': ol.xml.makeArrayPusher(
ol.format.GML.prototype.pointMemberParser_) ol.format.GMLBase.prototype.pointMemberParser_)
} }
}; };
@@ -427,12 +432,12 @@ ol.format.GML.MULTIPOINT_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.MULTILINESTRING_PARSERS_ = { ol.format.GMLBase.MULTILINESTRING_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'lineStringMember': ol.xml.makeArrayPusher( 'lineStringMember': ol.xml.makeArrayPusher(
ol.format.GML.prototype.lineStringMemberParser_), ol.format.GMLBase.prototype.lineStringMemberParser_),
'lineStringMembers': ol.xml.makeArrayPusher( 'lineStringMembers': ol.xml.makeArrayPusher(
ol.format.GML.prototype.lineStringMemberParser_) ol.format.GMLBase.prototype.lineStringMemberParser_)
} }
}; };
@@ -442,12 +447,12 @@ ol.format.GML.MULTILINESTRING_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.MULTIPOLYGON_PARSERS_ = { ol.format.GMLBase.MULTIPOLYGON_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'polygonMember': ol.xml.makeArrayPusher( 'polygonMember': ol.xml.makeArrayPusher(
ol.format.GML.prototype.polygonMemberParser_), ol.format.GMLBase.prototype.polygonMemberParser_),
'polygonMembers': ol.xml.makeArrayPusher( 'polygonMembers': ol.xml.makeArrayPusher(
ol.format.GML.prototype.polygonMemberParser_) ol.format.GMLBase.prototype.polygonMemberParser_)
} }
}; };
@@ -457,10 +462,10 @@ ol.format.GML.MULTIPOLYGON_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.POINTMEMBER_PARSERS_ = { ol.format.GMLBase.POINTMEMBER_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'Point': ol.xml.makeArrayPusher( 'Point': ol.xml.makeArrayPusher(
ol.format.GML.prototype.readFlatCoordinatesFromNode_) ol.format.GMLBase.prototype.readFlatCoordinatesFromNode_)
} }
}; };
@@ -470,10 +475,10 @@ ol.format.GML.POINTMEMBER_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.LINESTRINGMEMBER_PARSERS_ = { ol.format.GMLBase.LINESTRINGMEMBER_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'LineString': ol.xml.makeArrayPusher( 'LineString': ol.xml.makeArrayPusher(
ol.format.GML.prototype.readLineString) ol.format.GMLBase.prototype.readLineString)
} }
}; };
@@ -483,10 +488,10 @@ ol.format.GML.LINESTRINGMEMBER_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.POLYGONMEMBER_PARSERS_ = { ol.format.GMLBase.POLYGONMEMBER_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'Polygon': ol.xml.makeArrayPusher( 'Polygon': ol.xml.makeArrayPusher(
ol.format.GML.prototype.readPolygon) ol.format.GMLBase.prototype.readPolygon)
} }
}; };
@@ -496,10 +501,10 @@ ol.format.GML.POLYGONMEMBER_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @protected * @protected
*/ */
ol.format.GML.RING_PARSERS = { ol.format.GMLBase.RING_PARSERS = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'LinearRing': ol.xml.makeReplacer( 'LinearRing': ol.xml.makeReplacer(
ol.format.GML.prototype.readFlatLinearRing_) ol.format.GMLBase.prototype.readFlatLinearRing_)
} }
}; };
@@ -507,7 +512,8 @@ ol.format.GML.RING_PARSERS = {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.format.GML.prototype.readGeometryFromNode = function(node, opt_options) { ol.format.GMLBase.prototype.readGeometryFromNode =
function(node, opt_options) {
var geometry = this.readGeometryElement(node, var geometry = this.readGeometryElement(node,
[this.getReadOptions(node, goog.isDef(opt_options) ? opt_options : {})]); [this.getReadOptions(node, goog.isDef(opt_options) ? opt_options : {})]);
return (goog.isDef(geometry) ? geometry : null); return (goog.isDef(geometry) ? geometry : null);
@@ -523,13 +529,14 @@ ol.format.GML.prototype.readGeometryFromNode = function(node, opt_options) {
* @return {Array.<ol.Feature>} Features. * @return {Array.<ol.Feature>} Features.
* @api stable * @api stable
*/ */
ol.format.GML.prototype.readFeatures; ol.format.GMLBase.prototype.readFeatures;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.format.GML.prototype.readFeaturesFromNode = function(node, opt_options) { ol.format.GMLBase.prototype.readFeaturesFromNode =
function(node, opt_options) {
var options = { var options = {
'featureType': this.featureType, 'featureType': this.featureType,
'featureNS': this.featureNS 'featureNS': this.featureNS
@@ -544,7 +551,7 @@ ol.format.GML.prototype.readFeaturesFromNode = function(node, opt_options) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.format.GML.prototype.readProjectionFromNode = function(node) { ol.format.GMLBase.prototype.readProjectionFromNode = function(node) {
return ol.proj.get(goog.isDef(this.srsName_) ? this.srsName_ : return ol.proj.get(goog.isDef(this.srsName_) ? this.srsName_ :
node.firstElementChild.getAttribute('srsName')); node.firstElementChild.getAttribute('srsName'));
}; };
+27 -24
View File
@@ -1,10 +1,11 @@
goog.provide('ol.format.GML.v2'); goog.provide('ol.format.GML2');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.dom'); goog.require('goog.dom');
goog.require('goog.dom.NodeType'); goog.require('goog.dom.NodeType');
goog.require('goog.object'); goog.require('goog.object');
goog.require('ol.format.GML'); goog.require('ol.format.GML');
goog.require('ol.format.GMLBase');
goog.require('ol.format.XSD'); goog.require('ol.format.XSD');
goog.require('ol.proj'); goog.require('ol.proj');
goog.require('ol.xml'); goog.require('ol.xml');
@@ -19,14 +20,14 @@ goog.require('ol.xml');
* @constructor * @constructor
* @param {olx.format.GMLOptions=} opt_options * @param {olx.format.GMLOptions=} opt_options
* Optional configuration object. * Optional configuration object.
* @extends {ol.format.GML} * @extends {ol.format.GMLBase}
* @api stable * @api
*/ */
ol.format.GML.v2 = function(opt_options) { ol.format.GML2 = function(opt_options) {
goog.base(this, opt_options); goog.base(this, opt_options);
}; };
goog.inherits(ol.format.GML.v2, ol.format.GML); goog.inherits(ol.format.GML2, ol.format.GMLBase);
/** /**
@@ -34,7 +35,7 @@ goog.inherits(ol.format.GML.v2, ol.format.GML);
* @private * @private
* @type {string} * @type {string}
*/ */
ol.format.GML.v2.schemaLocation_ = 'http://www.opengis.net/gml ' + ol.format.GML2.schemaLocation_ = 'http://www.opengis.net/gml ' +
'http://schemas.opengis.net/gml/2.1.2/feature.xsd'; 'http://schemas.opengis.net/gml/2.1.2/feature.xsd';
@@ -44,7 +45,7 @@ ol.format.GML.v2.schemaLocation_ = 'http://www.opengis.net/gml ' +
* @private * @private
* @return {Array.<number>|undefined} Flat coordinates. * @return {Array.<number>|undefined} Flat coordinates.
*/ */
ol.format.GML.v2.prototype.readFlatCoordinates_ = function(node, objectStack) { ol.format.GML2.prototype.readFlatCoordinates_ = function(node, objectStack) {
var s = ol.xml.getAllTextContent(node, false).replace(/^\s*|\s*$/g, ''); var s = ol.xml.getAllTextContent(node, false).replace(/^\s*|\s*$/g, '');
var context = objectStack[0]; var context = objectStack[0];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -88,13 +89,13 @@ ol.format.GML.v2.prototype.readFlatCoordinates_ = function(node, objectStack) {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @private * @private
*/ */
ol.format.GML.v2.prototype.innerBoundaryIsParser_ = ol.format.GML2.prototype.innerBoundaryIsParser_ =
function(node, objectStack) { function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'innerBoundaryIs'); goog.asserts.assert(node.localName == 'innerBoundaryIs');
var flatLinearRing = ol.xml.pushParseAndPop( var flatLinearRing = ol.xml.pushParseAndPop(
/** @type {Array.<number>|undefined} */ (undefined), /** @type {Array.<number>|undefined} */ (undefined),
ol.format.GML.RING_PARSERS, node, objectStack, this); ol.format.GMLBase.RING_PARSERS, node, objectStack, this);
if (goog.isDef(flatLinearRing)) { if (goog.isDef(flatLinearRing)) {
var flatLinearRings = /** @type {Array.<Array.<number>>} */ var flatLinearRings = /** @type {Array.<Array.<number>>} */
(objectStack[objectStack.length - 1]); (objectStack[objectStack.length - 1]);
@@ -110,13 +111,13 @@ ol.format.GML.v2.prototype.innerBoundaryIsParser_ =
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @private * @private
*/ */
ol.format.GML.v2.prototype.outerBoundaryIsParser_ = ol.format.GML2.prototype.outerBoundaryIsParser_ =
function(node, objectStack) { function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'outerBoundaryIs'); goog.asserts.assert(node.localName == 'outerBoundaryIs');
var flatLinearRing = ol.xml.pushParseAndPop( var flatLinearRing = ol.xml.pushParseAndPop(
/** @type {Array.<number>|undefined} */ (undefined), /** @type {Array.<number>|undefined} */ (undefined),
ol.format.GML.RING_PARSERS, node, objectStack, this); ol.format.GMLBase.RING_PARSERS, node, objectStack, this);
if (goog.isDef(flatLinearRing)) { if (goog.isDef(flatLinearRing)) {
var flatLinearRings = /** @type {Array.<Array.<number>>} */ var flatLinearRings = /** @type {Array.<Array.<number>>} */
(objectStack[objectStack.length - 1]); (objectStack[objectStack.length - 1]);
@@ -132,10 +133,10 @@ ol.format.GML.v2.prototype.outerBoundaryIsParser_ =
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v2.GEOMETRY_FLAT_COORDINATES_PARSERS_ = { ol.format.GML2.GEOMETRY_FLAT_COORDINATES_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'coordinates': ol.xml.makeReplacer( 'coordinates': ol.xml.makeReplacer(
ol.format.GML.v2.prototype.readFlatCoordinates_) ol.format.GML2.prototype.readFlatCoordinates_)
} }
}; };
@@ -145,10 +146,10 @@ ol.format.GML.v2.GEOMETRY_FLAT_COORDINATES_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v2.FLAT_LINEAR_RINGS_PARSERS_ = { ol.format.GML2.FLAT_LINEAR_RINGS_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'innerBoundaryIs': ol.format.GML.v2.prototype.innerBoundaryIsParser_, 'innerBoundaryIs': ol.format.GML2.prototype.innerBoundaryIsParser_,
'outerBoundaryIs': ol.format.GML.v2.prototype.outerBoundaryIsParser_ 'outerBoundaryIs': ol.format.GML2.prototype.outerBoundaryIsParser_
} }
}; };
@@ -158,17 +159,19 @@ ol.format.GML.v2.FLAT_LINEAR_RINGS_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v2.GEOMETRY_PARSERS_ = { ol.format.GML2.GEOMETRY_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'Point': ol.xml.makeReplacer(ol.format.GML.prototype.readPoint), 'Point': ol.xml.makeReplacer(ol.format.GMLBase.prototype.readPoint),
'MultiPoint': ol.xml.makeReplacer(ol.format.GML.prototype.readMultiPoint), 'MultiPoint': ol.xml.makeReplacer(
'LineString': ol.xml.makeReplacer(ol.format.GML.prototype.readLineString), ol.format.GMLBase.prototype.readMultiPoint),
'LineString': ol.xml.makeReplacer(
ol.format.GMLBase.prototype.readLineString),
'MultiLineString': ol.xml.makeReplacer( 'MultiLineString': ol.xml.makeReplacer(
ol.format.GML.prototype.readMultiLineString), ol.format.GMLBase.prototype.readMultiLineString),
'LinearRing' : ol.xml.makeReplacer( 'LinearRing' : ol.xml.makeReplacer(
ol.format.GML.prototype.readLinearRing), ol.format.GMLBase.prototype.readLinearRing),
'Polygon': ol.xml.makeReplacer(ol.format.GML.prototype.readPolygon), 'Polygon': ol.xml.makeReplacer(ol.format.GMLBase.prototype.readPolygon),
'MultiPolygon': ol.xml.makeReplacer( 'MultiPolygon': ol.xml.makeReplacer(
ol.format.GML.prototype.readMultiPolygon) ol.format.GMLBase.prototype.readMultiPolygon)
} }
}; };
+137 -134
View File
@@ -1,4 +1,5 @@
goog.provide('ol.format.GML.v3'); goog.provide('ol.format.GML');
goog.provide('ol.format.GML3');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.dom'); goog.require('goog.dom');
@@ -8,7 +9,7 @@ goog.require('ol.Feature');
goog.require('ol.array'); goog.require('ol.array');
goog.require('ol.extent'); goog.require('ol.extent');
goog.require('ol.format.Feature'); goog.require('ol.format.Feature');
goog.require('ol.format.GML'); goog.require('ol.format.GMLBase');
goog.require('ol.format.XSD'); goog.require('ol.format.XSD');
goog.require('ol.geom.Geometry'); goog.require('ol.geom.Geometry');
goog.require('ol.geom.LineString'); goog.require('ol.geom.LineString');
@@ -31,10 +32,10 @@ goog.require('ol.xml');
* @constructor * @constructor
* @param {olx.format.GMLOptions=} opt_options * @param {olx.format.GMLOptions=} opt_options
* Optional configuration object. * Optional configuration object.
* @extends {ol.format.GML} * @extends {ol.format.GMLBase}
* @api stable * @api
*/ */
ol.format.GML.v3 = function(opt_options) { ol.format.GML3 = function(opt_options) {
var options = /** @type {olx.format.GMLOptions} */ var options = /** @type {olx.format.GMLOptions} */
(goog.isDef(opt_options) ? opt_options : {}); (goog.isDef(opt_options) ? opt_options : {});
@@ -69,7 +70,7 @@ ol.format.GML.v3 = function(opt_options) {
goog.base(this, opt_options); goog.base(this, opt_options);
}; };
goog.inherits(ol.format.GML.v3, ol.format.GML); goog.inherits(ol.format.GML3, ol.format.GMLBase);
@@ -93,7 +94,7 @@ ol.format.GML = ol.format.GML3;
* @type {string} * @type {string}
* @private * @private
*/ */
ol.format.GML.v3.schemaLocation_ = 'http://www.opengis.net/gml ' + ol.format.GML3.schemaLocation_ = 'http://www.opengis.net/gml ' +
'http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/' + 'http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/' +
'1.0.0/gmlsf.xsd'; '1.0.0/gmlsf.xsd';
@@ -104,12 +105,12 @@ ol.format.GML.v3.schemaLocation_ = 'http://www.opengis.net/gml ' +
* @private * @private
* @return {ol.geom.MultiLineString|undefined} MultiLineString. * @return {ol.geom.MultiLineString|undefined} MultiLineString.
*/ */
ol.format.GML.v3.prototype.readMultiCurve_ = function(node, objectStack) { ol.format.GML3.prototype.readMultiCurve_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'MultiCurve'); goog.asserts.assert(node.localName == 'MultiCurve');
var lineStrings = ol.xml.pushParseAndPop( var lineStrings = ol.xml.pushParseAndPop(
/** @type {Array.<ol.geom.LineString>} */ ([]), /** @type {Array.<ol.geom.LineString>} */ ([]),
ol.format.GML.v3.MULTICURVE_PARSERS_, node, objectStack, this); ol.format.GML3.MULTICURVE_PARSERS_, node, objectStack, this);
if (goog.isDef(lineStrings)) { if (goog.isDef(lineStrings)) {
var multiLineString = new ol.geom.MultiLineString(null); var multiLineString = new ol.geom.MultiLineString(null);
multiLineString.setLineStrings(lineStrings); multiLineString.setLineStrings(lineStrings);
@@ -126,12 +127,12 @@ ol.format.GML.v3.prototype.readMultiCurve_ = function(node, objectStack) {
* @private * @private
* @return {ol.geom.MultiPolygon|undefined} MultiPolygon. * @return {ol.geom.MultiPolygon|undefined} MultiPolygon.
*/ */
ol.format.GML.v3.prototype.readMultiSurface_ = function(node, objectStack) { ol.format.GML3.prototype.readMultiSurface_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'MultiSurface'); goog.asserts.assert(node.localName == 'MultiSurface');
var polygons = ol.xml.pushParseAndPop( var polygons = ol.xml.pushParseAndPop(
/** @type {Array.<ol.geom.Polygon>} */ ([]), /** @type {Array.<ol.geom.Polygon>} */ ([]),
ol.format.GML.v3.MULTISURFACE_PARSERS_, node, objectStack, this); ol.format.GML3.MULTISURFACE_PARSERS_, node, objectStack, this);
if (goog.isDef(polygons)) { if (goog.isDef(polygons)) {
var multiPolygon = new ol.geom.MultiPolygon(null); var multiPolygon = new ol.geom.MultiPolygon(null);
multiPolygon.setPolygons(polygons); multiPolygon.setPolygons(polygons);
@@ -147,11 +148,11 @@ ol.format.GML.v3.prototype.readMultiSurface_ = function(node, objectStack) {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.curveMemberParser_ = function(node, objectStack) { ol.format.GML3.prototype.curveMemberParser_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'curveMember' || goog.asserts.assert(node.localName == 'curveMember' ||
node.localName == 'curveMembers'); node.localName == 'curveMembers');
ol.xml.parse(ol.format.GML.v3.CURVEMEMBER_PARSERS_, node, objectStack, this); ol.xml.parse(ol.format.GML3.CURVEMEMBER_PARSERS_, node, objectStack, this);
}; };
@@ -160,11 +161,11 @@ ol.format.GML.v3.prototype.curveMemberParser_ = function(node, objectStack) {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.surfaceMemberParser_ = function(node, objectStack) { ol.format.GML3.prototype.surfaceMemberParser_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'surfaceMember' || goog.asserts.assert(node.localName == 'surfaceMember' ||
node.localName == 'surfaceMembers'); node.localName == 'surfaceMembers');
ol.xml.parse(ol.format.GML.v3.SURFACEMEMBER_PARSERS_, ol.xml.parse(ol.format.GML3.SURFACEMEMBER_PARSERS_,
node, objectStack, this); node, objectStack, this);
}; };
@@ -175,12 +176,12 @@ ol.format.GML.v3.prototype.surfaceMemberParser_ = function(node, objectStack) {
* @private * @private
* @return {Array.<(Array.<number>)>|undefined} flat coordinates. * @return {Array.<(Array.<number>)>|undefined} flat coordinates.
*/ */
ol.format.GML.v3.prototype.readPatch_ = function(node, objectStack) { ol.format.GML3.prototype.readPatch_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'patches'); goog.asserts.assert(node.localName == 'patches');
return ol.xml.pushParseAndPop( return ol.xml.pushParseAndPop(
/** @type {Array.<Array.<number>>} */ ([null]), /** @type {Array.<Array.<number>>} */ ([null]),
ol.format.GML.v3.PATCHES_PARSERS_, node, objectStack, this); ol.format.GML3.PATCHES_PARSERS_, node, objectStack, this);
}; };
@@ -190,12 +191,12 @@ ol.format.GML.v3.prototype.readPatch_ = function(node, objectStack) {
* @private * @private
* @return {Array.<number>|undefined} flat coordinates. * @return {Array.<number>|undefined} flat coordinates.
*/ */
ol.format.GML.v3.prototype.readSegment_ = function(node, objectStack) { ol.format.GML3.prototype.readSegment_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'segments'); goog.asserts.assert(node.localName == 'segments');
return ol.xml.pushParseAndPop( return ol.xml.pushParseAndPop(
/** @type {Array.<number>} */ ([null]), /** @type {Array.<number>} */ ([null]),
ol.format.GML.v3.SEGMENTS_PARSERS_, node, objectStack, this); ol.format.GML3.SEGMENTS_PARSERS_, node, objectStack, this);
}; };
@@ -205,7 +206,7 @@ ol.format.GML.v3.prototype.readSegment_ = function(node, objectStack) {
* @private * @private
* @return {Array.<(Array.<number>)>|undefined} flat coordinates. * @return {Array.<(Array.<number>)>|undefined} flat coordinates.
*/ */
ol.format.GML.v3.prototype.readPolygonPatch_ = function(node, objectStack) { ol.format.GML3.prototype.readPolygonPatch_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'PolygonPatch'); goog.asserts.assert(node.localName == 'PolygonPatch');
return ol.xml.pushParseAndPop( return ol.xml.pushParseAndPop(
@@ -220,7 +221,7 @@ ol.format.GML.v3.prototype.readPolygonPatch_ = function(node, objectStack) {
* @private * @private
* @return {Array.<number>|undefined} flat coordinates. * @return {Array.<number>|undefined} flat coordinates.
*/ */
ol.format.GML.v3.prototype.readLineStringSegment_ = ol.format.GML3.prototype.readLineStringSegment_ =
function(node, objectStack) { function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'LineStringSegment'); goog.asserts.assert(node.localName == 'LineStringSegment');
@@ -236,12 +237,12 @@ ol.format.GML.v3.prototype.readLineStringSegment_ =
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.interiorParser_ = function(node, objectStack) { ol.format.GML3.prototype.interiorParser_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'interior'); goog.asserts.assert(node.localName == 'interior');
var flatLinearRing = ol.xml.pushParseAndPop( var flatLinearRing = ol.xml.pushParseAndPop(
/** @type {Array.<number>|undefined} */ (undefined), /** @type {Array.<number>|undefined} */ (undefined),
ol.format.GML.RING_PARSERS, node, objectStack, this); ol.format.GMLBase.RING_PARSERS, node, objectStack, this);
if (goog.isDef(flatLinearRing)) { if (goog.isDef(flatLinearRing)) {
var flatLinearRings = /** @type {Array.<Array.<number>>} */ var flatLinearRings = /** @type {Array.<Array.<number>>} */
(objectStack[objectStack.length - 1]); (objectStack[objectStack.length - 1]);
@@ -257,12 +258,12 @@ ol.format.GML.v3.prototype.interiorParser_ = function(node, objectStack) {
* @param {Array.<*>} objectStack Object stack. * @param {Array.<*>} objectStack Object stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.exteriorParser_ = function(node, objectStack) { ol.format.GML3.prototype.exteriorParser_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'exterior'); goog.asserts.assert(node.localName == 'exterior');
var flatLinearRing = ol.xml.pushParseAndPop( var flatLinearRing = ol.xml.pushParseAndPop(
/** @type {Array.<number>|undefined} */ (undefined), /** @type {Array.<number>|undefined} */ (undefined),
ol.format.GML.RING_PARSERS, node, objectStack, this); ol.format.GMLBase.RING_PARSERS, node, objectStack, this);
if (goog.isDef(flatLinearRing)) { if (goog.isDef(flatLinearRing)) {
var flatLinearRings = /** @type {Array.<Array.<number>>} */ var flatLinearRings = /** @type {Array.<Array.<number>>} */
(objectStack[objectStack.length - 1]); (objectStack[objectStack.length - 1]);
@@ -279,12 +280,12 @@ ol.format.GML.v3.prototype.exteriorParser_ = function(node, objectStack) {
* @private * @private
* @return {ol.geom.Polygon|undefined} Polygon. * @return {ol.geom.Polygon|undefined} Polygon.
*/ */
ol.format.GML.v3.prototype.readSurface_ = function(node, objectStack) { ol.format.GML3.prototype.readSurface_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'Surface'); goog.asserts.assert(node.localName == 'Surface');
var flatLinearRings = ol.xml.pushParseAndPop( var flatLinearRings = ol.xml.pushParseAndPop(
/** @type {Array.<Array.<number>>} */ ([null]), /** @type {Array.<Array.<number>>} */ ([null]),
ol.format.GML.v3.SURFACE_PARSERS_, node, objectStack, this); ol.format.GML3.SURFACE_PARSERS_, node, objectStack, this);
if (goog.isDef(flatLinearRings) && if (goog.isDef(flatLinearRings) &&
!goog.isNull(flatLinearRings[0])) { !goog.isNull(flatLinearRings[0])) {
var polygon = new ol.geom.Polygon(null); var polygon = new ol.geom.Polygon(null);
@@ -310,12 +311,12 @@ ol.format.GML.v3.prototype.readSurface_ = function(node, objectStack) {
* @private * @private
* @return {ol.geom.LineString|undefined} LineString. * @return {ol.geom.LineString|undefined} LineString.
*/ */
ol.format.GML.v3.prototype.readCurve_ = function(node, objectStack) { ol.format.GML3.prototype.readCurve_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'Curve'); goog.asserts.assert(node.localName == 'Curve');
var flatCoordinates = ol.xml.pushParseAndPop( var flatCoordinates = ol.xml.pushParseAndPop(
/** @type {Array.<number>} */ ([null]), /** @type {Array.<number>} */ ([null]),
ol.format.GML.v3.CURVE_PARSERS_, node, objectStack, this); ol.format.GML3.CURVE_PARSERS_, node, objectStack, this);
if (goog.isDef(flatCoordinates)) { if (goog.isDef(flatCoordinates)) {
var lineString = new ol.geom.LineString(null); var lineString = new ol.geom.LineString(null);
lineString.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates); lineString.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates);
@@ -332,12 +333,12 @@ ol.format.GML.v3.prototype.readCurve_ = function(node, objectStack) {
* @private * @private
* @return {ol.Extent|undefined} Envelope. * @return {ol.Extent|undefined} Envelope.
*/ */
ol.format.GML.v3.prototype.readEnvelope_ = function(node, objectStack) { ol.format.GML3.prototype.readEnvelope_ = function(node, objectStack) {
goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT);
goog.asserts.assert(node.localName == 'Envelope'); goog.asserts.assert(node.localName == 'Envelope');
var flatCoordinates = ol.xml.pushParseAndPop( var flatCoordinates = ol.xml.pushParseAndPop(
/** @type {Array.<number>} */ ([null]), /** @type {Array.<number>} */ ([null]),
ol.format.GML.v3.ENVELOPE_PARSERS_, node, objectStack, this); ol.format.GML3.ENVELOPE_PARSERS_, node, objectStack, this);
return ol.extent.createOrUpdate(flatCoordinates[1][0], return ol.extent.createOrUpdate(flatCoordinates[1][0],
flatCoordinates[1][1], flatCoordinates[2][0], flatCoordinates[1][1], flatCoordinates[2][0],
flatCoordinates[2][1]); flatCoordinates[2][1]);
@@ -350,7 +351,7 @@ ol.format.GML.v3.prototype.readEnvelope_ = function(node, objectStack) {
* @private * @private
* @return {Array.<number>|undefined} Flat coordinates. * @return {Array.<number>|undefined} Flat coordinates.
*/ */
ol.format.GML.v3.prototype.readFlatPos_ = function(node, objectStack) { ol.format.GML3.prototype.readFlatPos_ = function(node, objectStack) {
var s = ol.xml.getAllTextContent(node, false); var s = ol.xml.getAllTextContent(node, false);
var re = /^\s*([+\-]?\d*\.?\d+(?:[eE][+\-]?\d+)?)\s*/; var re = /^\s*([+\-]?\d*\.?\d+(?:[eE][+\-]?\d+)?)\s*/;
/** @type {Array.<number>} */ /** @type {Array.<number>} */
@@ -397,7 +398,7 @@ ol.format.GML.v3.prototype.readFlatPos_ = function(node, objectStack) {
* @private * @private
* @return {Array.<number>|undefined} Flat coordinates. * @return {Array.<number>|undefined} Flat coordinates.
*/ */
ol.format.GML.v3.prototype.readFlatPosList_ = function(node, objectStack) { ol.format.GML3.prototype.readFlatPosList_ = function(node, objectStack) {
var s = ol.xml.getAllTextContent(node, false).replace(/^\s*|\s*$/g, ''); var s = ol.xml.getAllTextContent(node, false).replace(/^\s*|\s*$/g, '');
var context = objectStack[0]; var context = objectStack[0];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -441,10 +442,10 @@ ol.format.GML.v3.prototype.readFlatPosList_ = function(node, objectStack) {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v3.GEOMETRY_FLAT_COORDINATES_PARSERS_ = { ol.format.GML3.GEOMETRY_FLAT_COORDINATES_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'pos': ol.xml.makeReplacer(ol.format.GML.v3.prototype.readFlatPos_), 'pos': ol.xml.makeReplacer(ol.format.GML3.prototype.readFlatPos_),
'posList': ol.xml.makeReplacer(ol.format.GML.v3.prototype.readFlatPosList_) 'posList': ol.xml.makeReplacer(ol.format.GML3.prototype.readFlatPosList_)
} }
}; };
@@ -454,10 +455,10 @@ ol.format.GML.v3.GEOMETRY_FLAT_COORDINATES_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v3.FLAT_LINEAR_RINGS_PARSERS_ = { ol.format.GML3.FLAT_LINEAR_RINGS_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'interior': ol.format.GML.v3.prototype.interiorParser_, 'interior': ol.format.GML3.prototype.interiorParser_,
'exterior': ol.format.GML.v3.prototype.exteriorParser_ 'exterior': ol.format.GML3.prototype.exteriorParser_
} }
}; };
@@ -467,25 +468,27 @@ ol.format.GML.v3.FLAT_LINEAR_RINGS_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v3.GEOMETRY_PARSERS_ = { ol.format.GML3.GEOMETRY_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'Point': ol.xml.makeReplacer(ol.format.GML.prototype.readPoint), 'Point': ol.xml.makeReplacer(ol.format.GMLBase.prototype.readPoint),
'MultiPoint': ol.xml.makeReplacer(ol.format.GML.prototype.readMultiPoint), 'MultiPoint': ol.xml.makeReplacer(
'LineString': ol.xml.makeReplacer(ol.format.GML.prototype.readLineString), ol.format.GMLBase.prototype.readMultiPoint),
'LineString': ol.xml.makeReplacer(
ol.format.GMLBase.prototype.readLineString),
'MultiLineString': ol.xml.makeReplacer( 'MultiLineString': ol.xml.makeReplacer(
ol.format.GML.prototype.readMultiLineString), ol.format.GMLBase.prototype.readMultiLineString),
'LinearRing' : ol.xml.makeReplacer( 'LinearRing' : ol.xml.makeReplacer(
ol.format.GML.prototype.readLinearRing), ol.format.GMLBase.prototype.readLinearRing),
'Polygon': ol.xml.makeReplacer(ol.format.GML.prototype.readPolygon), 'Polygon': ol.xml.makeReplacer(ol.format.GMLBase.prototype.readPolygon),
'MultiPolygon': ol.xml.makeReplacer( 'MultiPolygon': ol.xml.makeReplacer(
ol.format.GML.prototype.readMultiPolygon), ol.format.GMLBase.prototype.readMultiPolygon),
'Surface': ol.xml.makeReplacer(ol.format.GML.v3.prototype.readSurface_), 'Surface': ol.xml.makeReplacer(ol.format.GML3.prototype.readSurface_),
'MultiSurface': ol.xml.makeReplacer( 'MultiSurface': ol.xml.makeReplacer(
ol.format.GML.v3.prototype.readMultiSurface_), ol.format.GML3.prototype.readMultiSurface_),
'Curve': ol.xml.makeReplacer(ol.format.GML.v3.prototype.readCurve_), 'Curve': ol.xml.makeReplacer(ol.format.GML3.prototype.readCurve_),
'MultiCurve': ol.xml.makeReplacer( 'MultiCurve': ol.xml.makeReplacer(
ol.format.GML.v3.prototype.readMultiCurve_), ol.format.GML3.prototype.readMultiCurve_),
'Envelope': ol.xml.makeReplacer(ol.format.GML.v3.prototype.readEnvelope_) 'Envelope': ol.xml.makeReplacer(ol.format.GML3.prototype.readEnvelope_)
} }
}; };
@@ -495,12 +498,12 @@ ol.format.GML.v3.GEOMETRY_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v3.MULTICURVE_PARSERS_ = { ol.format.GML3.MULTICURVE_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'curveMember': ol.xml.makeArrayPusher( 'curveMember': ol.xml.makeArrayPusher(
ol.format.GML.v3.prototype.curveMemberParser_), ol.format.GML3.prototype.curveMemberParser_),
'curveMembers': ol.xml.makeArrayPusher( 'curveMembers': ol.xml.makeArrayPusher(
ol.format.GML.v3.prototype.curveMemberParser_) ol.format.GML3.prototype.curveMemberParser_)
} }
}; };
@@ -510,12 +513,12 @@ ol.format.GML.v3.MULTICURVE_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v3.MULTISURFACE_PARSERS_ = { ol.format.GML3.MULTISURFACE_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'surfaceMember': ol.xml.makeArrayPusher( 'surfaceMember': ol.xml.makeArrayPusher(
ol.format.GML.v3.prototype.surfaceMemberParser_), ol.format.GML3.prototype.surfaceMemberParser_),
'surfaceMembers': ol.xml.makeArrayPusher( 'surfaceMembers': ol.xml.makeArrayPusher(
ol.format.GML.v3.prototype.surfaceMemberParser_) ol.format.GML3.prototype.surfaceMemberParser_)
} }
}; };
@@ -525,11 +528,11 @@ ol.format.GML.v3.MULTISURFACE_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v3.CURVEMEMBER_PARSERS_ = { ol.format.GML3.CURVEMEMBER_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'LineString': ol.xml.makeArrayPusher( 'LineString': ol.xml.makeArrayPusher(
ol.format.GML.prototype.readLineString), ol.format.GMLBase.prototype.readLineString),
'Curve': ol.xml.makeArrayPusher(ol.format.GML.v3.prototype.readCurve_) 'Curve': ol.xml.makeArrayPusher(ol.format.GML3.prototype.readCurve_)
} }
}; };
@@ -539,10 +542,10 @@ ol.format.GML.v3.CURVEMEMBER_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v3.SURFACEMEMBER_PARSERS_ = { ol.format.GML3.SURFACEMEMBER_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'Polygon': ol.xml.makeArrayPusher(ol.format.GML.prototype.readPolygon), 'Polygon': ol.xml.makeArrayPusher(ol.format.GMLBase.prototype.readPolygon),
'Surface': ol.xml.makeArrayPusher(ol.format.GML.v3.prototype.readSurface_) 'Surface': ol.xml.makeArrayPusher(ol.format.GML3.prototype.readSurface_)
} }
}; };
@@ -552,9 +555,9 @@ ol.format.GML.v3.SURFACEMEMBER_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v3.SURFACE_PARSERS_ = { ol.format.GML3.SURFACE_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'patches': ol.xml.makeReplacer(ol.format.GML.v3.prototype.readPatch_) 'patches': ol.xml.makeReplacer(ol.format.GML3.prototype.readPatch_)
} }
}; };
@@ -564,9 +567,9 @@ ol.format.GML.v3.SURFACE_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v3.CURVE_PARSERS_ = { ol.format.GML3.CURVE_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'segments': ol.xml.makeReplacer(ol.format.GML.v3.prototype.readSegment_) 'segments': ol.xml.makeReplacer(ol.format.GML3.prototype.readSegment_)
} }
}; };
@@ -576,12 +579,12 @@ ol.format.GML.v3.CURVE_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v3.ENVELOPE_PARSERS_ = { ol.format.GML3.ENVELOPE_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'lowerCorner': ol.xml.makeArrayPusher( 'lowerCorner': ol.xml.makeArrayPusher(
ol.format.GML.v3.prototype.readFlatPosList_), ol.format.GML3.prototype.readFlatPosList_),
'upperCorner': ol.xml.makeArrayPusher( 'upperCorner': ol.xml.makeArrayPusher(
ol.format.GML.v3.prototype.readFlatPosList_) ol.format.GML3.prototype.readFlatPosList_)
} }
}; };
@@ -591,10 +594,10 @@ ol.format.GML.v3.ENVELOPE_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v3.PATCHES_PARSERS_ = { ol.format.GML3.PATCHES_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'PolygonPatch': ol.xml.makeReplacer( 'PolygonPatch': ol.xml.makeReplacer(
ol.format.GML.v3.prototype.readPolygonPatch_) ol.format.GML3.prototype.readPolygonPatch_)
} }
}; };
@@ -604,10 +607,10 @@ ol.format.GML.v3.PATCHES_PARSERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Parser>>} * @type {Object.<string, Object.<string, ol.xml.Parser>>}
* @private * @private
*/ */
ol.format.GML.v3.SEGMENTS_PARSERS_ = { ol.format.GML3.SEGMENTS_PARSERS_ = {
'http://www.opengis.net/gml' : { 'http://www.opengis.net/gml' : {
'LineStringSegment': ol.xml.makeReplacer( 'LineStringSegment': ol.xml.makeReplacer(
ol.format.GML.v3.prototype.readLineStringSegment_) ol.format.GML3.prototype.readLineStringSegment_)
} }
}; };
@@ -618,7 +621,7 @@ ol.format.GML.v3.SEGMENTS_PARSERS_ = {
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writePos_ = function(node, value, objectStack) { ol.format.GML3.prototype.writePos_ = function(node, value, objectStack) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
var srsName = goog.object.get(context, 'srsName'); var srsName = goog.object.get(context, 'srsName');
@@ -644,7 +647,7 @@ ol.format.GML.v3.prototype.writePos_ = function(node, value, objectStack) {
* @return {string} * @return {string}
* @private * @private
*/ */
ol.format.GML.v3.prototype.getCoords_ = function(point, opt_srsName) { ol.format.GML3.prototype.getCoords_ = function(point, opt_srsName) {
var axisOrientation = 'enu'; var axisOrientation = 'enu';
if (goog.isDefAndNotNull(opt_srsName)) { if (goog.isDefAndNotNull(opt_srsName)) {
axisOrientation = ol.proj.get(opt_srsName).getAxisOrientation(); axisOrientation = ol.proj.get(opt_srsName).getAxisOrientation();
@@ -661,7 +664,7 @@ ol.format.GML.v3.prototype.getCoords_ = function(point, opt_srsName) {
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writePosList_ = function(node, value, objectStack) { ol.format.GML3.prototype.writePosList_ = function(node, value, objectStack) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
var srsName = goog.object.get(context, 'srsName'); var srsName = goog.object.get(context, 'srsName');
@@ -684,7 +687,7 @@ ol.format.GML.v3.prototype.writePosList_ = function(node, value, objectStack) {
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writePoint_ = function(node, geometry, objectStack) { ol.format.GML3.prototype.writePoint_ = function(node, geometry, objectStack) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
var srsName = goog.object.get(context, 'srsName'); var srsName = goog.object.get(context, 'srsName');
@@ -701,7 +704,7 @@ ol.format.GML.v3.prototype.writePoint_ = function(node, geometry, objectStack) {
* @type {Object.<string, Object.<string, ol.xml.Serializer>>} * @type {Object.<string, Object.<string, ol.xml.Serializer>>}
* @private * @private
*/ */
ol.format.GML.v3.ENVELOPE_SERIALIZERS_ = { ol.format.GML3.ENVELOPE_SERIALIZERS_ = {
'http://www.opengis.net/gml': { 'http://www.opengis.net/gml': {
'lowerCorner': ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), 'lowerCorner': ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode),
'upperCorner': ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode) 'upperCorner': ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode)
@@ -714,7 +717,7 @@ ol.format.GML.v3.ENVELOPE_SERIALIZERS_ = {
* @param {ol.Extent} extent Extent. * @param {ol.Extent} extent Extent.
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
*/ */
ol.format.GML.v3.prototype.writeEnvelope = function(node, extent, objectStack) { ol.format.GML3.prototype.writeEnvelope = function(node, extent, objectStack) {
goog.asserts.assert(extent.length == 4); goog.asserts.assert(extent.length == 4);
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -725,7 +728,7 @@ ol.format.GML.v3.prototype.writeEnvelope = function(node, extent, objectStack) {
var keys = ['lowerCorner', 'upperCorner']; var keys = ['lowerCorner', 'upperCorner'];
var values = [extent[0] + ' ' + extent[1], extent[2] + ' ' + extent[3]]; var values = [extent[0] + ' ' + extent[1], extent[2] + ' ' + extent[3]];
ol.xml.pushSerializeAndPop(/** @type {ol.xml.NodeStackItem} */ ol.xml.pushSerializeAndPop(/** @type {ol.xml.NodeStackItem} */
({node: node}), ol.format.GML.v3.ENVELOPE_SERIALIZERS_, ({node: node}), ol.format.GML3.ENVELOPE_SERIALIZERS_,
ol.xml.OBJECT_PROPERTY_NODE_FACTORY, ol.xml.OBJECT_PROPERTY_NODE_FACTORY,
values, values,
objectStack, keys, this); objectStack, keys, this);
@@ -738,7 +741,7 @@ ol.format.GML.v3.prototype.writeEnvelope = function(node, extent, objectStack) {
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writeLinearRing_ = ol.format.GML3.prototype.writeLinearRing_ =
function(node, geometry, objectStack) { function(node, geometry, objectStack) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -759,7 +762,7 @@ ol.format.GML.v3.prototype.writeLinearRing_ =
* @return {Node} Node. * @return {Node} Node.
* @private * @private
*/ */
ol.format.GML.v3.prototype.RING_NODE_FACTORY_ = ol.format.GML3.prototype.RING_NODE_FACTORY_ =
function(value, objectStack, opt_nodeName) { function(value, objectStack, opt_nodeName) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
var parentNode = context.node; var parentNode = context.node;
@@ -779,7 +782,7 @@ ol.format.GML.v3.prototype.RING_NODE_FACTORY_ =
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writeSurfaceOrPolygon_ = ol.format.GML3.prototype.writeSurfaceOrPolygon_ =
function(node, geometry, objectStack) { function(node, geometry, objectStack) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -791,7 +794,7 @@ ol.format.GML.v3.prototype.writeSurfaceOrPolygon_ =
var rings = geometry.getLinearRings(); var rings = geometry.getLinearRings();
ol.xml.pushSerializeAndPop( ol.xml.pushSerializeAndPop(
{node: node, srsName: srsName}, {node: node, srsName: srsName},
ol.format.GML.v3.RING_SERIALIZERS_, ol.format.GML3.RING_SERIALIZERS_,
this.RING_NODE_FACTORY_, this.RING_NODE_FACTORY_,
rings, objectStack, undefined, this); rings, objectStack, undefined, this);
} else if (node.nodeName === 'Surface') { } else if (node.nodeName === 'Surface') {
@@ -809,7 +812,7 @@ ol.format.GML.v3.prototype.writeSurfaceOrPolygon_ =
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writeCurveOrLineString_ = ol.format.GML3.prototype.writeCurveOrLineString_ =
function(node, geometry, objectStack) { function(node, geometry, objectStack) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -838,7 +841,7 @@ ol.format.GML.v3.prototype.writeCurveOrLineString_ =
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writeMultiSurfaceOrPolygon_ = ol.format.GML3.prototype.writeMultiSurfaceOrPolygon_ =
function(node, geometry, objectStack) { function(node, geometry, objectStack) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -849,7 +852,7 @@ ol.format.GML.v3.prototype.writeMultiSurfaceOrPolygon_ =
} }
var polygons = geometry.getPolygons(); var polygons = geometry.getPolygons();
ol.xml.pushSerializeAndPop({node: node, srsName: srsName, surface: surface}, ol.xml.pushSerializeAndPop({node: node, srsName: srsName, surface: surface},
ol.format.GML.v3.SURFACEORPOLYGONMEMBER_SERIALIZERS_, ol.format.GML3.SURFACEORPOLYGONMEMBER_SERIALIZERS_,
this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, polygons, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, polygons,
objectStack, undefined, this); objectStack, undefined, this);
}; };
@@ -861,7 +864,7 @@ ol.format.GML.v3.prototype.writeMultiSurfaceOrPolygon_ =
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writeMultiPoint_ = function(node, geometry, ol.format.GML3.prototype.writeMultiPoint_ = function(node, geometry,
objectStack) { objectStack) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -871,7 +874,7 @@ ol.format.GML.v3.prototype.writeMultiPoint_ = function(node, geometry,
} }
var points = geometry.getPoints(); var points = geometry.getPoints();
ol.xml.pushSerializeAndPop({node: node, srsName: srsName}, ol.xml.pushSerializeAndPop({node: node, srsName: srsName},
ol.format.GML.v3.POINTMEMBER_SERIALIZERS_, ol.format.GML3.POINTMEMBER_SERIALIZERS_,
ol.xml.makeSimpleNodeFactory('pointMember'), points, ol.xml.makeSimpleNodeFactory('pointMember'), points,
objectStack, undefined, this); objectStack, undefined, this);
}; };
@@ -883,7 +886,7 @@ ol.format.GML.v3.prototype.writeMultiPoint_ = function(node, geometry,
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writeMultiCurveOrLineString_ = ol.format.GML3.prototype.writeMultiCurveOrLineString_ =
function(node, geometry, objectStack) { function(node, geometry, objectStack) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -894,7 +897,7 @@ ol.format.GML.v3.prototype.writeMultiCurveOrLineString_ =
} }
var lines = geometry.getLineStrings(); var lines = geometry.getLineStrings();
ol.xml.pushSerializeAndPop({node: node, srsName: srsName, curve: curve}, ol.xml.pushSerializeAndPop({node: node, srsName: srsName, curve: curve},
ol.format.GML.v3.LINESTRINGORCURVEMEMBER_SERIALIZERS_, ol.format.GML3.LINESTRINGORCURVEMEMBER_SERIALIZERS_,
this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, lines, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, lines,
objectStack, undefined, this); objectStack, undefined, this);
}; };
@@ -906,7 +909,7 @@ ol.format.GML.v3.prototype.writeMultiCurveOrLineString_ =
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writeRing_ = function(node, ring, objectStack) { ol.format.GML3.prototype.writeRing_ = function(node, ring, objectStack) {
var linearRing = ol.xml.createElementNS(node.namespaceURI, 'LinearRing'); var linearRing = ol.xml.createElementNS(node.namespaceURI, 'LinearRing');
node.appendChild(linearRing); node.appendChild(linearRing);
this.writeLinearRing_(linearRing, ring, objectStack); this.writeLinearRing_(linearRing, ring, objectStack);
@@ -919,7 +922,7 @@ ol.format.GML.v3.prototype.writeRing_ = function(node, ring, objectStack) {
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writeSurfaceOrPolygonMember_ = ol.format.GML3.prototype.writeSurfaceOrPolygonMember_ =
function(node, polygon, objectStack) { function(node, polygon, objectStack) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -938,7 +941,7 @@ ol.format.GML.v3.prototype.writeSurfaceOrPolygonMember_ =
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writePointMember_ = ol.format.GML3.prototype.writePointMember_ =
function(node, point, objectStack) { function(node, point, objectStack) {
var child = ol.xml.createElementNS(node.namespaceURI, 'Point'); var child = ol.xml.createElementNS(node.namespaceURI, 'Point');
node.appendChild(child); node.appendChild(child);
@@ -952,7 +955,7 @@ ol.format.GML.v3.prototype.writePointMember_ =
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writeLineStringOrCurveMember_ = ol.format.GML3.prototype.writeLineStringOrCurveMember_ =
function(node, line, objectStack) { function(node, line, objectStack) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -970,7 +973,7 @@ ol.format.GML.v3.prototype.writeLineStringOrCurveMember_ =
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writeSurfacePatches_ = ol.format.GML3.prototype.writeSurfacePatches_ =
function(node, polygon, objectStack) { function(node, polygon, objectStack) {
var child = ol.xml.createElementNS(node.namespaceURI, 'PolygonPatch'); var child = ol.xml.createElementNS(node.namespaceURI, 'PolygonPatch');
node.appendChild(child); node.appendChild(child);
@@ -984,7 +987,7 @@ ol.format.GML.v3.prototype.writeSurfacePatches_ =
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writeCurveSegments_ = ol.format.GML3.prototype.writeCurveSegments_ =
function(node, line, objectStack) { function(node, line, objectStack) {
var child = ol.xml.createElementNS(node.namespaceURI, var child = ol.xml.createElementNS(node.namespaceURI,
'LineStringSegment'); 'LineStringSegment');
@@ -998,7 +1001,7 @@ ol.format.GML.v3.prototype.writeCurveSegments_ =
* @param {ol.geom.Geometry|ol.Extent} geometry Geometry. * @param {ol.geom.Geometry|ol.Extent} geometry Geometry.
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
*/ */
ol.format.GML.v3.prototype.writeGeometryElement = ol.format.GML3.prototype.writeGeometryElement =
function(node, geometry, objectStack) { function(node, geometry, objectStack) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -1018,7 +1021,7 @@ ol.format.GML.v3.prototype.writeGeometryElement =
ol.format.Feature.transformWithOptions(geometry, true, context); ol.format.Feature.transformWithOptions(geometry, true, context);
} }
ol.xml.pushSerializeAndPop(/** @type {ol.xml.NodeStackItem} */ ol.xml.pushSerializeAndPop(/** @type {ol.xml.NodeStackItem} */
(item), ol.format.GML.v3.GEOMETRY_SERIALIZERS_, (item), ol.format.GML3.GEOMETRY_SERIALIZERS_,
this.GEOMETRY_NODE_FACTORY_, [value], this.GEOMETRY_NODE_FACTORY_, [value],
objectStack, undefined, this); objectStack, undefined, this);
}; };
@@ -1029,7 +1032,7 @@ ol.format.GML.v3.prototype.writeGeometryElement =
* @param {ol.Feature} feature Feature. * @param {ol.Feature} feature Feature.
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
*/ */
ol.format.GML.v3.prototype.writeFeatureElement = ol.format.GML3.prototype.writeFeatureElement =
function(node, feature, objectStack) { function(node, feature, objectStack) {
var fid = feature.getId(); var fid = feature.getId();
if (goog.isDef(fid)) { if (goog.isDef(fid)) {
@@ -1079,7 +1082,7 @@ ol.format.GML.v3.prototype.writeFeatureElement =
* @param {Array.<*>} objectStack Node stack. * @param {Array.<*>} objectStack Node stack.
* @private * @private
*/ */
ol.format.GML.v3.prototype.writeFeatureMembers_ = ol.format.GML3.prototype.writeFeatureMembers_ =
function(node, features, objectStack) { function(node, features, objectStack) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -1103,12 +1106,12 @@ ol.format.GML.v3.prototype.writeFeatureMembers_ =
* @type {Object.<string, Object.<string, ol.xml.Serializer>>} * @type {Object.<string, Object.<string, ol.xml.Serializer>>}
* @private * @private
*/ */
ol.format.GML.v3.SURFACEORPOLYGONMEMBER_SERIALIZERS_ = { ol.format.GML3.SURFACEORPOLYGONMEMBER_SERIALIZERS_ = {
'http://www.opengis.net/gml': { 'http://www.opengis.net/gml': {
'surfaceMember': ol.xml.makeChildAppender( 'surfaceMember': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeSurfaceOrPolygonMember_), ol.format.GML3.prototype.writeSurfaceOrPolygonMember_),
'polygonMember': ol.xml.makeChildAppender( 'polygonMember': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeSurfaceOrPolygonMember_) ol.format.GML3.prototype.writeSurfaceOrPolygonMember_)
} }
}; };
@@ -1117,10 +1120,10 @@ ol.format.GML.v3.SURFACEORPOLYGONMEMBER_SERIALIZERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Serializer>>} * @type {Object.<string, Object.<string, ol.xml.Serializer>>}
* @private * @private
*/ */
ol.format.GML.v3.POINTMEMBER_SERIALIZERS_ = { ol.format.GML3.POINTMEMBER_SERIALIZERS_ = {
'http://www.opengis.net/gml': { 'http://www.opengis.net/gml': {
'pointMember': ol.xml.makeChildAppender( 'pointMember': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writePointMember_) ol.format.GML3.prototype.writePointMember_)
} }
}; };
@@ -1129,12 +1132,12 @@ ol.format.GML.v3.POINTMEMBER_SERIALIZERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Serializer>>} * @type {Object.<string, Object.<string, ol.xml.Serializer>>}
* @private * @private
*/ */
ol.format.GML.v3.LINESTRINGORCURVEMEMBER_SERIALIZERS_ = { ol.format.GML3.LINESTRINGORCURVEMEMBER_SERIALIZERS_ = {
'http://www.opengis.net/gml': { 'http://www.opengis.net/gml': {
'lineStringMember': ol.xml.makeChildAppender( 'lineStringMember': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeLineStringOrCurveMember_), ol.format.GML3.prototype.writeLineStringOrCurveMember_),
'curveMember': ol.xml.makeChildAppender( 'curveMember': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeLineStringOrCurveMember_) ol.format.GML3.prototype.writeLineStringOrCurveMember_)
} }
}; };
@@ -1143,10 +1146,10 @@ ol.format.GML.v3.LINESTRINGORCURVEMEMBER_SERIALIZERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Serializer>>} * @type {Object.<string, Object.<string, ol.xml.Serializer>>}
* @private * @private
*/ */
ol.format.GML.v3.RING_SERIALIZERS_ = { ol.format.GML3.RING_SERIALIZERS_ = {
'http://www.opengis.net/gml': { 'http://www.opengis.net/gml': {
'exterior': ol.xml.makeChildAppender(ol.format.GML.v3.prototype.writeRing_), 'exterior': ol.xml.makeChildAppender(ol.format.GML3.prototype.writeRing_),
'interior': ol.xml.makeChildAppender(ol.format.GML.v3.prototype.writeRing_) 'interior': ol.xml.makeChildAppender(ol.format.GML3.prototype.writeRing_)
} }
}; };
@@ -1155,31 +1158,31 @@ ol.format.GML.v3.RING_SERIALIZERS_ = {
* @type {Object.<string, Object.<string, ol.xml.Serializer>>} * @type {Object.<string, Object.<string, ol.xml.Serializer>>}
* @private * @private
*/ */
ol.format.GML.v3.GEOMETRY_SERIALIZERS_ = { ol.format.GML3.GEOMETRY_SERIALIZERS_ = {
'http://www.opengis.net/gml': { 'http://www.opengis.net/gml': {
'Curve': ol.xml.makeChildAppender( 'Curve': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeCurveOrLineString_), ol.format.GML3.prototype.writeCurveOrLineString_),
'MultiCurve': ol.xml.makeChildAppender( 'MultiCurve': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeMultiCurveOrLineString_), ol.format.GML3.prototype.writeMultiCurveOrLineString_),
'Point': ol.xml.makeChildAppender(ol.format.GML.v3.prototype.writePoint_), 'Point': ol.xml.makeChildAppender(ol.format.GML3.prototype.writePoint_),
'MultiPoint': ol.xml.makeChildAppender( 'MultiPoint': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeMultiPoint_), ol.format.GML3.prototype.writeMultiPoint_),
'LineString': ol.xml.makeChildAppender( 'LineString': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeCurveOrLineString_), ol.format.GML3.prototype.writeCurveOrLineString_),
'MultiLineString': ol.xml.makeChildAppender( 'MultiLineString': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeMultiCurveOrLineString_), ol.format.GML3.prototype.writeMultiCurveOrLineString_),
'LinearRing': ol.xml.makeChildAppender( 'LinearRing': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeLinearRing_), ol.format.GML3.prototype.writeLinearRing_),
'Polygon': ol.xml.makeChildAppender( 'Polygon': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeSurfaceOrPolygon_), ol.format.GML3.prototype.writeSurfaceOrPolygon_),
'MultiPolygon': ol.xml.makeChildAppender( 'MultiPolygon': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeMultiSurfaceOrPolygon_), ol.format.GML3.prototype.writeMultiSurfaceOrPolygon_),
'Surface': ol.xml.makeChildAppender( 'Surface': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeSurfaceOrPolygon_), ol.format.GML3.prototype.writeSurfaceOrPolygon_),
'MultiSurface': ol.xml.makeChildAppender( 'MultiSurface': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeMultiSurfaceOrPolygon_), ol.format.GML3.prototype.writeMultiSurfaceOrPolygon_),
'Envelope': ol.xml.makeChildAppender( 'Envelope': ol.xml.makeChildAppender(
ol.format.GML.v3.prototype.writeEnvelope) ol.format.GML3.prototype.writeEnvelope)
} }
}; };
@@ -1189,7 +1192,7 @@ ol.format.GML.v3.GEOMETRY_SERIALIZERS_ = {
* @type {Object.<string, string>} * @type {Object.<string, string>}
* @private * @private
*/ */
ol.format.GML.v3.MULTIGEOMETRY_TO_MEMBER_NODENAME_ = { ol.format.GML3.MULTIGEOMETRY_TO_MEMBER_NODENAME_ = {
'MultiLineString': 'lineStringMember', 'MultiLineString': 'lineStringMember',
'MultiCurve': 'curveMember', 'MultiCurve': 'curveMember',
'MultiPolygon': 'polygonMember', 'MultiPolygon': 'polygonMember',
@@ -1205,12 +1208,12 @@ ol.format.GML.v3.MULTIGEOMETRY_TO_MEMBER_NODENAME_ = {
* @return {Node|undefined} Node. * @return {Node|undefined} Node.
* @private * @private
*/ */
ol.format.GML.v3.prototype.MULTIGEOMETRY_MEMBER_NODE_FACTORY_ = ol.format.GML3.prototype.MULTIGEOMETRY_MEMBER_NODE_FACTORY_ =
function(value, objectStack, opt_nodeName) { function(value, objectStack, opt_nodeName) {
var parentNode = objectStack[objectStack.length - 1].node; var parentNode = objectStack[objectStack.length - 1].node;
goog.asserts.assert(ol.xml.isNode(parentNode)); goog.asserts.assert(ol.xml.isNode(parentNode));
return ol.xml.createElementNS('http://www.opengis.net/gml', return ol.xml.createElementNS('http://www.opengis.net/gml',
ol.format.GML.v3.MULTIGEOMETRY_TO_MEMBER_NODENAME_[parentNode.nodeName]); ol.format.GML3.MULTIGEOMETRY_TO_MEMBER_NODENAME_[parentNode.nodeName]);
}; };
@@ -1222,7 +1225,7 @@ ol.format.GML.v3.prototype.MULTIGEOMETRY_MEMBER_NODE_FACTORY_ =
* @return {Node|undefined} Node. * @return {Node|undefined} Node.
* @private * @private
*/ */
ol.format.GML.v3.prototype.GEOMETRY_NODE_FACTORY_ = ol.format.GML3.prototype.GEOMETRY_NODE_FACTORY_ =
function(value, objectStack, opt_nodeName) { function(value, objectStack, opt_nodeName) {
var context = objectStack[objectStack.length - 1]; var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context)); goog.asserts.assert(goog.isObject(context));
@@ -1256,7 +1259,7 @@ ol.format.GML.v3.prototype.GEOMETRY_NODE_FACTORY_ =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.format.GML.v3.prototype.writeGeometryNode = function(geometry, opt_options) { ol.format.GML3.prototype.writeGeometryNode = function(geometry, opt_options) {
var geom = ol.xml.createElementNS('http://www.opengis.net/gml', 'geom'); var geom = ol.xml.createElementNS('http://www.opengis.net/gml', 'geom');
var context = {node: geom, srsName: this.srsName, var context = {node: geom, srsName: this.srsName,
curve: this.curve_, surface: this.surface_, curve: this.curve_, surface: this.surface_,
@@ -1278,13 +1281,13 @@ ol.format.GML.v3.prototype.writeGeometryNode = function(geometry, opt_options) {
* @return {Node} Result. * @return {Node} Result.
* @api stable * @api stable
*/ */
ol.format.GML.v3.prototype.writeFeatures; ol.format.GML3.prototype.writeFeatures;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.format.GML.v3.prototype.writeFeaturesNode = function(features, opt_options) { ol.format.GML3.prototype.writeFeaturesNode = function(features, opt_options) {
var node = ol.xml.createElementNS('http://www.opengis.net/gml', var node = ol.xml.createElementNS('http://www.opengis.net/gml',
'featureMembers'); 'featureMembers');
ol.xml.setAttributeNS(node, 'http://www.w3.org/2001/XMLSchema-instance', ol.xml.setAttributeNS(node, 'http://www.w3.org/2001/XMLSchema-instance',
+10 -9
View File
@@ -3,7 +3,8 @@ goog.provide('ol.format.WFS');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.dom.NodeType'); goog.require('goog.dom.NodeType');
goog.require('goog.object'); goog.require('goog.object');
goog.require('ol.format.GML'); goog.require('ol.format.GML3');
goog.require('ol.format.GMLBase');
goog.require('ol.format.XMLFeature'); goog.require('ol.format.XMLFeature');
goog.require('ol.format.XSD'); goog.require('ol.format.XSD');
goog.require('ol.geom.Geometry'); goog.require('ol.geom.Geometry');
@@ -16,7 +17,7 @@ goog.require('ol.xml');
* @classdesc * @classdesc
* Feature format for reading and writing data in the WFS format. * Feature format for reading and writing data in the WFS format.
* Currently only supports WFS version 1.1.0. * Currently only supports WFS version 1.1.0.
* Also see {@link ol.format.GML} which is used by this format. * Also see {@link ol.format.GMLBase} which is used by this format.
* *
* @constructor * @constructor
* @param {olx.format.WFSOptions=} opt_options * @param {olx.format.WFSOptions=} opt_options
@@ -42,10 +43,10 @@ ol.format.WFS = function(opt_options) {
/** /**
* @private * @private
* @type {ol.format.GML} * @type {ol.format.GMLBase}
*/ */
this.gmlFormat_ = goog.isDef(options.gmlFormat) ? this.gmlFormat_ = goog.isDef(options.gmlFormat) ?
options.gmlFormat : new ol.format.GML.v3(); options.gmlFormat : new ol.format.GML3();
/** /**
* @private * @private
@@ -126,7 +127,7 @@ ol.format.WFS.prototype.readFeaturesFromNode = function(node, opt_options) {
goog.isDef(opt_options) ? opt_options : {})); goog.isDef(opt_options) ? opt_options : {}));
var objectStack = [context]; var objectStack = [context];
var features = ol.xml.pushParseAndPop([], var features = ol.xml.pushParseAndPop([],
ol.format.GML.FEATURE_COLLECTION_PARSERS, node, ol.format.GMLBase.FEATURE_COLLECTION_PARSERS, node,
objectStack, this.gmlFormat_); objectStack, this.gmlFormat_);
if (!goog.isDef(features)) { if (!goog.isDef(features)) {
features = []; features = [];
@@ -204,7 +205,7 @@ ol.format.WFS.prototype.readFeatureCollectionMetadataFromDocument =
ol.format.WFS.FEATURE_COLLECTION_PARSERS_ = { ol.format.WFS.FEATURE_COLLECTION_PARSERS_ = {
'http://www.opengis.net/gml': { 'http://www.opengis.net/gml': {
'boundedBy': ol.xml.makeObjectPropertySetter( 'boundedBy': ol.xml.makeObjectPropertySetter(
ol.format.GML.prototype.readGeometryElement, 'bounds') ol.format.GMLBase.prototype.readGeometryElement, 'bounds')
} }
}; };
@@ -371,7 +372,7 @@ ol.format.WFS.writeFeature_ = function(node, feature, objectStack) {
var featureNS = goog.object.get(context, 'featureNS'); var featureNS = goog.object.get(context, 'featureNS');
var child = ol.xml.createElementNS(featureNS, featureType); var child = ol.xml.createElementNS(featureNS, featureType);
node.appendChild(child); node.appendChild(child);
ol.format.GML.v3.prototype.writeFeatureElement(child, feature, objectStack); ol.format.GML3.prototype.writeFeatureElement(child, feature, objectStack);
}; };
@@ -465,7 +466,7 @@ ol.format.WFS.writeProperty_ = function(node, pair, objectStack) {
var value = ol.xml.createElementNS('http://www.opengis.net/wfs', 'Value'); var value = ol.xml.createElementNS('http://www.opengis.net/wfs', 'Value');
node.appendChild(value); node.appendChild(value);
if (pair.value instanceof ol.geom.Geometry) { if (pair.value instanceof ol.geom.Geometry) {
ol.format.GML.v3.prototype.writeGeometryElement(value, ol.format.GML3.prototype.writeGeometryElement(value,
pair.value, objectStack); pair.value, objectStack);
} else { } else {
ol.format.XSD.writeStringTextNode(value, pair.value); ol.format.XSD.writeStringTextNode(value, pair.value);
@@ -573,7 +574,7 @@ ol.format.WFS.writeOgcBBOX_ = function(node, bbox, objectStack) {
var bboxNode = ol.xml.createElementNS('http://www.opengis.net/ogc', 'BBOX'); var bboxNode = ol.xml.createElementNS('http://www.opengis.net/ogc', 'BBOX');
node.appendChild(bboxNode); node.appendChild(bboxNode);
ol.format.WFS.writeOgcPropertyName_(bboxNode, geometryName, objectStack); ol.format.WFS.writeOgcPropertyName_(bboxNode, geometryName, objectStack);
ol.format.GML.v3.prototype.writeGeometryElement(bboxNode, bbox, objectStack); ol.format.GML3.prototype.writeGeometryElement(bboxNode, bbox, objectStack);
}; };
+23 -21
View File
@@ -8,15 +8,15 @@ var readGeometry = function(format, text, opt_options) {
return format.readGeometryFromNode(node, opt_options); return format.readGeometryFromNode(node, opt_options);
}; };
describe('ol.format.GML.v2', function() { describe('ol.format.GML2', function() {
var format, formatWGS84, formatNoSrs; var format, formatWGS84, formatNoSrs;
beforeEach(function() { beforeEach(function() {
format = new ol.format.GML.v2({srsName: 'CRS:84'}); format = new ol.format.GML2({srsName: 'CRS:84'});
formatWGS84 = new ol.format.GML.v2({ formatWGS84 = new ol.format.GML2({
srsName: 'urn:x-ogc:def:crs:EPSG:4326' srsName: 'urn:x-ogc:def:crs:EPSG:4326'
}); });
formatNoSrs = new ol.format.GML.v2(); formatNoSrs = new ol.format.GML2();
}); });
@@ -95,15 +95,15 @@ describe('ol.format.GML.v2', function() {
}); });
}); });
describe('ol.format.GML.v3', function() { describe('ol.format.GML3', function() {
var format, formatWGS84, formatNoSrs; var format, formatWGS84, formatNoSrs;
beforeEach(function() { beforeEach(function() {
format = new ol.format.GML.v3({srsName: 'CRS:84'}); format = new ol.format.GML({srsName: 'CRS:84'});
formatWGS84 = new ol.format.GML.v3({ formatWGS84 = new ol.format.GML({
srsName: 'urn:x-ogc:def:crs:EPSG:4326' srsName: 'urn:x-ogc:def:crs:EPSG:4326'
}); });
formatNoSrs = new ol.format.GML.v3(); formatNoSrs = new ol.format.GML();
}); });
describe('#readGeometry', function() { describe('#readGeometry', function() {
@@ -305,7 +305,7 @@ describe('ol.format.GML.v3', function() {
var g = readGeometry(format, text); var g = readGeometry(format, text);
expect(g.getCoordinates()[0][0][0][0]).to.equal(-77.0081); expect(g.getCoordinates()[0][0][0][0]).to.equal(-77.0081);
expect(g.getCoordinates()[0][0][0][1]).to.equal(38.9661); expect(g.getCoordinates()[0][0][0][1]).to.equal(38.9661);
format = new ol.format.GML.v3({ format = new ol.format.GML({
srsName: 'urn:x-ogc:def:crs:EPSG:4326', srsName: 'urn:x-ogc:def:crs:EPSG:4326',
surface: false}); surface: false});
var serialized = format.writeGeometry(g); var serialized = format.writeGeometry(g);
@@ -411,7 +411,7 @@ describe('ol.format.GML.v3', function() {
expect(g.getCoordinates()).to.eql([[[1, 2, 0], [3, 2, 0], [3, 4, 0], expect(g.getCoordinates()).to.eql([[[1, 2, 0], [3, 2, 0], [3, 4, 0],
[1, 2, 0]], [[2, 3, 0], [2, 5, 0], [4, 5, 0], [2, 3, 0]], [1, 2, 0]], [[2, 3, 0], [2, 5, 0], [4, 5, 0], [2, 3, 0]],
[[3, 4, 0], [3, 6, 0], [5, 6, 0], [3, 4, 0]]]); [[3, 4, 0], [3, 6, 0], [5, 6, 0], [3, 4, 0]]]);
format = new ol.format.GML.v3({srsName: 'CRS:84', surface: true}); format = new ol.format.GML({srsName: 'CRS:84', surface: true});
var serialized = format.writeGeometry(g); var serialized = format.writeGeometry(g);
expect(serialized.firstElementChild).to.xmleql(ol.xml.load(text)); expect(serialized.firstElementChild).to.xmleql(ol.xml.load(text));
}); });
@@ -433,7 +433,7 @@ describe('ol.format.GML.v3', function() {
var g = readGeometry(format, text); var g = readGeometry(format, text);
expect(g).to.be.an(ol.geom.LineString); expect(g).to.be.an(ol.geom.LineString);
expect(g.getCoordinates()).to.eql([[1, 2, 0], [3, 4, 0]]); expect(g.getCoordinates()).to.eql([[1, 2, 0], [3, 4, 0]]);
format = new ol.format.GML.v3({srsName: 'CRS:84', curve: true}); format = new ol.format.GML({srsName: 'CRS:84', curve: true});
var serialized = format.writeGeometry(g); var serialized = format.writeGeometry(g);
expect(serialized.firstElementChild).to.xmleql(ol.xml.load(text)); expect(serialized.firstElementChild).to.xmleql(ol.xml.load(text));
}); });
@@ -528,7 +528,7 @@ describe('ol.format.GML.v3', function() {
expect(g).to.be.an(ol.geom.MultiLineString); expect(g).to.be.an(ol.geom.MultiLineString);
expect(g.getCoordinates()).to.eql( expect(g.getCoordinates()).to.eql(
[[[1, 2, 0], [2, 3, 0]], [[3, 4, 0], [4, 5, 0]]]); [[[1, 2, 0], [2, 3, 0]], [[3, 4, 0], [4, 5, 0]]]);
format = new ol.format.GML.v3({srsName: 'CRS:84', multiCurve: false}); format = new ol.format.GML({srsName: 'CRS:84', multiCurve: false});
var serialized = format.writeGeometry(g); var serialized = format.writeGeometry(g);
expect(serialized.firstElementChild).to.xmleql(ol.xml.load(text)); expect(serialized.firstElementChild).to.xmleql(ol.xml.load(text));
}); });
@@ -596,7 +596,7 @@ describe('ol.format.GML.v3', function() {
[1, 2, 0]], [[2, 3, 0], [2, 5, 0], [4, 5, 0], [2, 3, 0]], [1, 2, 0]], [[2, 3, 0], [2, 5, 0], [4, 5, 0], [2, 3, 0]],
[[3, 4, 0], [3, 6, 0], [5, 6, 0], [3, 4, 0]]], [[3, 4, 0], [3, 6, 0], [5, 6, 0], [3, 4, 0]]],
[[[1, 2, 0], [3, 2, 0], [3, 4, 0], [1, 2, 0]]]]); [[[1, 2, 0], [3, 2, 0], [3, 4, 0], [1, 2, 0]]]]);
format = new ol.format.GML.v3({srsName: 'CRS:84', multiSurface: false}); format = new ol.format.GML({srsName: 'CRS:84', multiSurface: false});
var serialized = format.writeGeometry(g); var serialized = format.writeGeometry(g);
expect(serialized.firstElementChild).to.xmleql(ol.xml.load(text)); expect(serialized.firstElementChild).to.xmleql(ol.xml.load(text));
}); });
@@ -696,7 +696,7 @@ describe('ol.format.GML.v3', function() {
expect(g).to.be.an(ol.geom.MultiLineString); expect(g).to.be.an(ol.geom.MultiLineString);
expect(g.getCoordinates()).to.eql( expect(g.getCoordinates()).to.eql(
[[[1, 2, 0], [2, 3, 0]], [[3, 4, 0], [4, 5, 0]]]); [[[1, 2, 0], [2, 3, 0]], [[3, 4, 0], [4, 5, 0]]]);
format = new ol.format.GML.v3({srsName: 'CRS:84', curve: true}); format = new ol.format.GML({srsName: 'CRS:84', curve: true});
var serialized = format.writeGeometry(g); var serialized = format.writeGeometry(g);
expect(serialized.firstElementChild).to.xmleql(ol.xml.load(text)); expect(serialized.firstElementChild).to.xmleql(ol.xml.load(text));
}); });
@@ -839,7 +839,7 @@ describe('ol.format.GML.v3', function() {
[1, 2, 0]], [[2, 3, 0], [2, 5, 0], [4, 5, 0], [2, 3, 0]], [1, 2, 0]], [[2, 3, 0], [2, 5, 0], [4, 5, 0], [2, 3, 0]],
[[3, 4, 0], [3, 6, 0], [5, 6, 0], [3, 4, 0]]], [[3, 4, 0], [3, 6, 0], [5, 6, 0], [3, 4, 0]]],
[[[1, 2, 0], [3, 2, 0], [3, 4, 0], [1, 2, 0]]]]); [[[1, 2, 0], [3, 2, 0], [3, 4, 0], [1, 2, 0]]]]);
format = new ol.format.GML.v3({srsName: 'CRS:84', surface: true}); format = new ol.format.GML({srsName: 'CRS:84', surface: true});
var serialized = format.writeGeometry(g); var serialized = format.writeGeometry(g);
expect(serialized.firstElementChild).to.xmleql(ol.xml.load(text)); expect(serialized.firstElementChild).to.xmleql(ol.xml.load(text));
}); });
@@ -871,7 +871,7 @@ describe('ol.format.GML.v3', function() {
'featureNS': 'http://www.openplans.org/topp', 'featureNS': 'http://www.openplans.org/topp',
'featureType': 'gnis_pop' 'featureType': 'gnis_pop'
}; };
var features = new ol.format.GML.v3(config).readFeatures(text); var features = new ol.format.GML(config).readFeatures(text);
var feature = features[0]; var feature = features[0];
expect(feature.get('empty')).to.be(undefined); expect(feature.get('empty')).to.be(undefined);
}); });
@@ -883,7 +883,7 @@ describe('ol.format.GML.v3', function() {
afterLoadText('spec/ol/format/gml/topp-states-wfs.xml', function(xml) { afterLoadText('spec/ol/format/gml/topp-states-wfs.xml', function(xml) {
try { try {
text = xml; text = xml;
gmlFormat = new ol.format.GML.v3(); gmlFormat = new ol.format.GML();
features = gmlFormat.readFeatures(xml); features = gmlFormat.readFeatures(xml);
} catch (e) { } catch (e) {
done(e); done(e);
@@ -948,7 +948,7 @@ describe('ol.format.GML.v3', function() {
'schemaLocation': schemaLoc 'schemaLocation': schemaLoc
}; };
text = xml; text = xml;
gmlFormat = new ol.format.GML.v3(config); gmlFormat = new ol.format.GML(config);
features = gmlFormat.readFeatures(xml); features = gmlFormat.readFeatures(xml);
} catch (e) { } catch (e) {
done(e); done(e);
@@ -982,7 +982,7 @@ describe('ol.format.GML.v3', function() {
'featureNS': 'http://www.openplans.org/topp', 'featureNS': 'http://www.openplans.org/topp',
'featureType': 'states' 'featureType': 'states'
}; };
features = new ol.format.GML.v3(config).readFeatures(xml); features = new ol.format.GML(config).readFeatures(xml);
} catch (e) { } catch (e) {
done(e); done(e);
} }
@@ -1013,7 +1013,7 @@ describe('ol.format.GML.v3', function() {
'featureNS': 'http://opengeo.org/#medford', 'featureNS': 'http://opengeo.org/#medford',
'featureType': 'zoning' 'featureType': 'zoning'
}; };
features = new ol.format.GML.v3(config).readFeatures(xml); features = new ol.format.GML(config).readFeatures(xml);
} catch (e) { } catch (e) {
done(e); done(e);
} }
@@ -1039,7 +1039,7 @@ describe('ol.format.GML.v3', function() {
'featureNS': 'http://opengeo.org/#medford', 'featureNS': 'http://opengeo.org/#medford',
'featureType': 'zoning' 'featureType': 'zoning'
}; };
features = new ol.format.GML.v3(config).readFeatures(xml); features = new ol.format.GML(config).readFeatures(xml);
} catch (e) { } catch (e) {
done(e); done(e);
} }
@@ -1060,6 +1060,8 @@ describe('ol.format.GML.v3', function() {
goog.require('goog.dom'); goog.require('goog.dom');
goog.require('goog.dom.TagName'); goog.require('goog.dom.TagName');
goog.require('ol.format.GML'); goog.require('ol.format.GML');
goog.require('ol.format.GML2');
goog.require('ol.format.GML3');
goog.require('ol.geom.LineString'); goog.require('ol.geom.LineString');
goog.require('ol.geom.LinearRing'); goog.require('ol.geom.LinearRing');
goog.require('ol.geom.MultiPoint'); goog.require('ol.geom.MultiPoint');
+2 -3
View File
@@ -56,7 +56,7 @@ describe('ol.format.WFS', function() {
var config = { var config = {
'featureNS': 'http://mapserver.gis.umn.edu/mapserver', 'featureNS': 'http://mapserver.gis.umn.edu/mapserver',
'featureType': 'polygon', 'featureType': 'polygon',
'gmlFormat': new ol.format.GML.v2() 'gmlFormat': new ol.format.GML2()
}; };
before(function(done) { before(function(done) {
@@ -440,7 +440,6 @@ goog.require('ol.geom.MultiLineString');
goog.require('ol.geom.MultiPoint'); goog.require('ol.geom.MultiPoint');
goog.require('ol.geom.MultiPolygon'); goog.require('ol.geom.MultiPolygon');
goog.require('ol.geom.Polygon'); goog.require('ol.geom.Polygon');
goog.require('ol.format.GML'); goog.require('ol.format.GML2');
goog.require('ol.format.GML.v2');
goog.require('ol.format.WFS'); goog.require('ol.format.WFS');
goog.require('ol.proj'); goog.require('ol.proj');