Merge remote-tracking branch 'upstream/master' into vector-api

Conflicts:
	src/objectliterals.jsdoc
	src/ol/attribution.js
	src/ol/geom/geometry.js
	src/ol/geom/geometrycollection.js
	src/ol/geom/linestring.js
	src/ol/layer/vectorlayer.exports
	src/ol/layer/vectorlayer.js
	src/ol/map.js
	src/ol/proj/proj.js
	src/ol/renderer/canvas/canvasvectorlayerrenderer.js
	src/ol/source/imagewmssource.js
	src/ol/source/tilewmssource.js
	src/ol/source/vectorsource.exports
	src/ol/source/vectorsource.js
	src/ol/source/wmssource.js
	src/ol/style/style.js
	src/ol/tilegrid/tilegrid.js
	src/ol/tilegrid/wmtstilegrid.js
	src/ol/tilegrid/xyztilegrid.js
This commit is contained in:
Éric Lemoine
2013-12-13 12:46:55 +01:00
167 changed files with 678 additions and 505 deletions
+5 -5
View File
@@ -410,10 +410,10 @@ ol.parser.GeoJSON.prototype.write = function(obj) {
*/
ol.parser.GeoJSON.GeometryType = {
'Point': ol.geom.GeometryType.POINT,
'LineString': ol.geom.GeometryType.LINESTRING,
'LineString': ol.geom.GeometryType.LINE_STRING,
'Polygon': ol.geom.GeometryType.POLYGON,
'MultiPoint': ol.geom.GeometryType.MULTIPOINT,
'MultiLineString': ol.geom.GeometryType.MULTILINESTRING,
'MultiPolygon': ol.geom.GeometryType.MULTIPOLYGON,
'GeometryCollection': ol.geom.GeometryType.GEOMETRYCOLLECTION
'MultiPoint': ol.geom.GeometryType.MULTI_POINT,
'MultiLineString': ol.geom.GeometryType.MULTI_LINE_STRING,
'MultiPolygon': ol.geom.GeometryType.MULTI_POLYGON,
'GeometryCollection': ol.geom.GeometryType.GEOMETRY_COLLECTION
};
+4 -4
View File
@@ -21,12 +21,12 @@ goog.require('ol.parser.XML');
* @implements {ol.parser.DomFeatureParser}
* @implements {ol.parser.StringFeatureParser}
* @implements {ol.parser.ObjectFeatureParser}
* @param {ol.parser.GPXOptions=} opt_options Optional configuration object.
* @param {olx.parser.GPXOptions=} opt_options Optional configuration object.
* @extends {ol.parser.XML}
* @todo stability experimental
*/
ol.parser.GPX = function(opt_options) {
var options = /** @type {ol.parser.GPXOptions} */
var options = /** @type {olx.parser.GPXOptions} */
(goog.isDef(opt_options) ? opt_options : {});
this.extractAttributes = goog.isDef(options.extractAttributes) ?
options.extractAttributes : true;
@@ -65,7 +65,7 @@ ol.parser.GPX = function(opt_options) {
},
'rte': function(node, obj) {
if (this.extractRoutes || obj.force) {
var type = ol.geom.GeometryType.LINESTRING;
var type = ol.geom.GeometryType.LINE_STRING;
var container = {
properties: {},
geometry: {
@@ -269,7 +269,7 @@ ol.parser.GPX.prototype.readFeaturesFromObject = function(obj) {
/**
* @param {ol.parser.GPXWriteOptions} obj Object structure to write out
* @param {olx.parser.GPXWriteOptions} obj Object structure to write out
* as GPX.
* @return {string} An string representing the GPX document.
*/
+14 -14
View File
@@ -40,12 +40,12 @@ goog.require('ol.style.Stroke');
* @implements {ol.parser.StringFeatureParser}
* @implements {ol.parser.AsyncObjectFeatureParser}
* @implements {ol.parser.AsyncStringFeatureParser}
* @param {ol.parser.KMLOptions=} opt_options Optional configuration object.
* @param {olx.parser.KMLOptions=} opt_options Optional configuration object.
* @extends {ol.parser.XML}
* @todo stability experimental
*/
ol.parser.KML = function(opt_options) {
var options = /** @type {ol.parser.KMLOptions} */
var options = /** @type {olx.parser.KMLOptions} */
(goog.isDef(opt_options) ? opt_options : {});
this.extractAttributes = goog.isDef(options.extractAttributes) ?
options.extractAttributes : true;
@@ -185,19 +185,19 @@ ol.parser.KML = function(opt_options) {
switch (type) {
case ol.geom.GeometryType.POINT:
obj.geometry = {
type: ol.geom.GeometryType.MULTIPOINT,
type: ol.geom.GeometryType.MULTI_POINT,
parts: parts
};
break;
case ol.geom.GeometryType.LINESTRING:
case ol.geom.GeometryType.LINE_STRING:
obj.geometry = {
type: ol.geom.GeometryType.MULTILINESTRING,
type: ol.geom.GeometryType.MULTI_LINE_STRING,
parts: parts
};
break;
case ol.geom.GeometryType.POLYGON:
obj.geometry = {
type: ol.geom.GeometryType.MULTIPOLYGON,
type: ol.geom.GeometryType.MULTI_POLYGON,
parts: parts
};
break;
@@ -207,7 +207,7 @@ ol.parser.KML = function(opt_options) {
} else {
// mixed collection
obj.geometry = {
type: ol.geom.GeometryType.GEOMETRYCOLLECTION,
type: ol.geom.GeometryType.GEOMETRY_COLLECTION,
parts: parts
};
}
@@ -250,7 +250,7 @@ ol.parser.KML = function(opt_options) {
var coordinates = [];
this.readChildNodes(node, coordinates);
var linestring = {
type: ol.geom.GeometryType.LINESTRING,
type: ol.geom.GeometryType.LINE_STRING,
coordinates: coordinates[0]
};
// in the case of a multi geometry this is parts
@@ -730,7 +730,7 @@ ol.parser.KML = function(opt_options) {
this.setAttributeNS(node, null, 'id', obj.id);
}
var literal = obj.symbolizer.createLiteral(
ol.geom.GeometryType.LINESTRING);
ol.geom.GeometryType.LINE_STRING);
this.writeNode('color', {
color: literal.color.substring(1),
opacity: literal.opacity
@@ -1111,34 +1111,34 @@ ol.parser.KML.prototype.createGeometry_ = function(container) {
case ol.geom.GeometryType.POINT:
geometry = new ol.geom.Point(container.geometry.coordinates);
break;
case ol.geom.GeometryType.LINESTRING:
case ol.geom.GeometryType.LINE_STRING:
geometry = new ol.geom.LineString(container.geometry.coordinates);
break;
case ol.geom.GeometryType.POLYGON:
geometry = new ol.geom.Polygon(container.geometry.coordinates);
break;
case ol.geom.GeometryType.MULTIPOINT:
case ol.geom.GeometryType.MULTI_POINT:
coordinates = [];
for (i = 0, ii = container.geometry.parts.length; i < ii; i++) {
coordinates.push(container.geometry.parts[i].coordinates);
}
geometry = new ol.geom.MultiPoint(coordinates);
break;
case ol.geom.GeometryType.MULTILINESTRING:
case ol.geom.GeometryType.MULTI_LINE_STRING:
coordinates = [];
for (i = 0, ii = container.geometry.parts.length; i < ii; i++) {
coordinates.push(container.geometry.parts[i].coordinates);
}
geometry = new ol.geom.MultiLineString(coordinates);
break;
case ol.geom.GeometryType.MULTIPOLYGON:
case ol.geom.GeometryType.MULTI_POLYGON:
coordinates = [];
for (i = 0, ii = container.geometry.parts.length; i < ii; i++) {
coordinates.push(container.geometry.parts[i].coordinates);
}
geometry = new ol.geom.MultiPolygon(coordinates);
break;
case ol.geom.GeometryType.GEOMETRYCOLLECTION:
case ol.geom.GeometryType.GEOMETRY_COLLECTION:
var geometries = [];
for (i = 0, ii = container.geometry.parts.length; i < ii; i++) {
geometries.push(this.createGeometry_({
+1 -1
View File
@@ -649,6 +649,6 @@ ol.parser.ogc.Filter_v1.prototype.setSrsName = function(srsName) {
this.srsName = srsName;
if (goog.isDefAndNotNull(this.gmlParser_)) {
this.gmlParser_.applyWriteOptions({},
/** @type {ol.parser.GMLWriteOptions} */ ({srsName: srsName}));
/** @type {olx.parser.GMLWriteOptions} */ ({srsName: srsName}));
}
};
+22 -22
View File
@@ -22,12 +22,12 @@ goog.require('ol.proj');
/**
* @constructor
* @implements {ol.parser.StringFeatureParser}
* @param {ol.parser.GMLOptions=} opt_options
* @param {olx.parser.GMLOptions=} opt_options
* Optional configuration object.
* @extends {ol.parser.XML}
*/
ol.parser.ogc.GML = function(opt_options) {
var options = /** @type {ol.parser.GMLOptions} */
var options = /** @type {olx.parser.GMLOptions} */
(goog.isDef(opt_options) ? opt_options : {});
this.extractAttributes = goog.isDef(options.extractAttributes) ?
options.extractAttributes : true;
@@ -102,7 +102,7 @@ ol.parser.ogc.GML = function(opt_options) {
[node, parts, container]);
this.readChildNodes(node, parts);
container.geometry = {
type: ol.geom.GeometryType.GEOMETRYCOLLECTION,
type: ol.geom.GeometryType.GEOMETRY_COLLECTION,
parts: parts
};
},
@@ -115,7 +115,7 @@ ol.parser.ogc.GML = function(opt_options) {
[node, parts, container]);
this.readChildNodes(node, parts);
container.geometry = {
type: ol.geom.GeometryType.MULTIPOINT,
type: ol.geom.GeometryType.MULTI_POINT,
parts: parts
};
},
@@ -128,7 +128,7 @@ ol.parser.ogc.GML = function(opt_options) {
[node, parts, container]);
this.readChildNodes(node, parts);
container.geometry = {
type: ol.geom.GeometryType.MULTILINESTRING,
type: ol.geom.GeometryType.MULTI_LINE_STRING,
parts: parts
};
},
@@ -141,7 +141,7 @@ ol.parser.ogc.GML = function(opt_options) {
[node, parts, container]);
this.readChildNodes(node, parts);
container.geometry = {
type: ol.geom.GeometryType.MULTIPOLYGON,
type: ol.geom.GeometryType.MULTI_POLYGON,
parts: parts
};
},
@@ -173,7 +173,7 @@ ol.parser.ogc.GML = function(opt_options) {
[node, coordinates, container]);
this.readChildNodes(node, coordinates);
var linestring = {
type: ol.geom.GeometryType.LINESTRING,
type: ol.geom.GeometryType.LINE_STRING,
coordinates: coordinates[0]
};
// in the case of a multi geometry this is parts
@@ -209,7 +209,7 @@ ol.parser.ogc.GML = function(opt_options) {
container.push(coordinates);
} else {
container.geometry = {
type: ol.geom.GeometryType.LINEARRING,
type: ol.geom.GeometryType.LINEAR_RING,
coordinates: coordinates[0]
};
}
@@ -444,20 +444,20 @@ ol.parser.ogc.GML = function(opt_options) {
var type = geometry.getType(), child;
if (type === ol.geom.GeometryType.POINT) {
child = this.writeNode('Point', geometry, null, node);
} else if (type === ol.geom.GeometryType.MULTIPOINT) {
} else if (type === ol.geom.GeometryType.MULTI_POINT) {
child = this.writeNode('MultiPoint', geometry, null, node);
} else if (type === ol.geom.GeometryType.LINEARRING) {
} else if (type === ol.geom.GeometryType.LINEAR_RING) {
child = this.writeNode('LinearRing', geometry.getCoordinates(), null,
node);
} else if (type === ol.geom.GeometryType.LINESTRING) {
} else if (type === ol.geom.GeometryType.LINE_STRING) {
child = this.writeNode('LineString', geometry, null, node);
} else if (type === ol.geom.GeometryType.MULTILINESTRING) {
} else if (type === ol.geom.GeometryType.MULTI_LINE_STRING) {
child = this.writeNode('MultiLineString', geometry, null, node);
} else if (type === ol.geom.GeometryType.POLYGON) {
child = this.writeNode('Polygon', geometry, null, node);
} else if (type === ol.geom.GeometryType.MULTIPOLYGON) {
} else if (type === ol.geom.GeometryType.MULTI_POLYGON) {
child = this.writeNode('MultiPolygon', geometry, null, node);
} else if (type === ol.geom.GeometryType.GEOMETRYCOLLECTION) {
} else if (type === ol.geom.GeometryType.GEOMETRY_COLLECTION) {
child = this.writeNode('GeometryCollection', geometry, null, node);
}
if (goog.isDefAndNotNull(this.srsName)) {
@@ -491,7 +491,7 @@ ol.parser.ogc.GML.prototype.writeGeometry = function(geometry) {
/**
* @param {string|Document|Element|Object} data Data to read.
* @param {ol.parser.GMLReadOptions=} opt_options Read options.
* @param {olx.parser.GMLReadOptions=} opt_options Read options.
* @return {ol.parser.ReadFeaturesResult} An object representing the document.
*/
ol.parser.ogc.GML.prototype.read = function(data, opt_options) {
@@ -570,37 +570,37 @@ ol.parser.ogc.GML.prototype.createGeometry = function(container) {
case ol.geom.GeometryType.POINT:
geometry = new ol.geom.Point(container.geometry.coordinates);
break;
case ol.geom.GeometryType.LINEARRING:
case ol.geom.GeometryType.LINEAR_RING:
geometry = new ol.geom.LinearRing(container.geometry.coordinates);
break;
case ol.geom.GeometryType.LINESTRING:
case ol.geom.GeometryType.LINE_STRING:
geometry = new ol.geom.LineString(container.geometry.coordinates);
break;
case ol.geom.GeometryType.POLYGON:
geometry = new ol.geom.Polygon(container.geometry.coordinates);
break;
case ol.geom.GeometryType.MULTIPOINT:
case ol.geom.GeometryType.MULTI_POINT:
coordinates = [];
for (i = 0, ii = container.geometry.parts.length; i < ii; i++) {
coordinates.push(container.geometry.parts[i].coordinates);
}
geometry = new ol.geom.MultiPoint(coordinates);
break;
case ol.geom.GeometryType.MULTILINESTRING:
case ol.geom.GeometryType.MULTI_LINE_STRING:
coordinates = [];
for (i = 0, ii = container.geometry.parts.length; i < ii; i++) {
coordinates.push(container.geometry.parts[i].coordinates);
}
geometry = new ol.geom.MultiLineString(coordinates);
break;
case ol.geom.GeometryType.MULTIPOLYGON:
case ol.geom.GeometryType.MULTI_POLYGON:
coordinates = [];
for (i = 0, ii = container.geometry.parts.length; i < ii; i++) {
coordinates.push(container.geometry.parts[i].coordinates);
}
geometry = new ol.geom.MultiPolygon(coordinates);
break;
case ol.geom.GeometryType.GEOMETRYCOLLECTION:
case ol.geom.GeometryType.GEOMETRY_COLLECTION:
var geometries = [];
for (i = 0, ii = container.geometry.parts.length; i < ii; i++) {
geometries.push(this.createGeometry({
@@ -630,7 +630,7 @@ ol.parser.ogc.GML.prototype.readFeaturesFromString = function(str) {
* Applies the writeOptions passed into the write function.
* @param {ol.parser.ReadFeaturesResult} obj Object structure to write out as
* GML.
* @param {ol.parser.GMLWriteOptions=} opt_options Write options.
* @param {olx.parser.GMLWriteOptions=} opt_options Write options.
*/
ol.parser.ogc.GML.prototype.applyWriteOptions = function(obj, opt_options) {
// srsName handling: opt_options -> this.writeOptions -> obj.metadata
+2 -2
View File
@@ -11,7 +11,7 @@ goog.require('ol.parser.ogc.GML');
* version 2.1.2
*
* @constructor
* @param {ol.parser.GMLOptions=} opt_options Optional configuration object.
* @param {olx.parser.GMLOptions=} opt_options Optional configuration object.
* @extends {ol.parser.ogc.GML}
* @todo stability experimental
*/
@@ -127,7 +127,7 @@ goog.inherits(ol.parser.ogc.GML_v2, ol.parser.ogc.GML);
/**
* @param {ol.parser.ReadFeaturesResult} obj Object structure to write out as
* GML.
* @param {ol.parser.GMLWriteOptions=} opt_options Write options.
* @param {olx.parser.GMLWriteOptions=} opt_options Write options.
* @return {string} A string representing the GML document.
* @todo stability experimental
*/
+11 -11
View File
@@ -13,7 +13,7 @@ goog.require('ol.parser.ogc.GML');
* version 3.1.1
*
* @constructor
* @param {ol.parser.GMLOptions=} opt_options Optional configuration object.
* @param {olx.parser.GMLOptions=} opt_options Optional configuration object.
* @extends {ol.parser.ogc.GML}
* @todo stability experimental
*/
@@ -29,18 +29,18 @@ ol.parser.ogc.GML_v3 = function(opt_options) {
var type = geometry.getType(), child;
if (type === ol.geom.GeometryType.POINT) {
child = this.writeNode('Point', geometry, null, node);
} else if (type === ol.geom.GeometryType.MULTIPOINT) {
} else if (type === ol.geom.GeometryType.MULTI_POINT) {
child = this.writeNode('MultiPoint', geometry, null, node);
} else if (type === ol.geom.GeometryType.LINESTRING) {
} else if (type === ol.geom.GeometryType.LINE_STRING) {
if (this.curve === true) {
child = this.writeNode('Curve', geometry, null, node);
} else {
child = this.writeNode('LineString', geometry, null, node);
}
} else if (type === ol.geom.GeometryType.LINEARRING) {
} else if (type === ol.geom.GeometryType.LINEAR_RING) {
child = this.writeNode('LinearRing', geometry.getCoordinates(), null,
node);
} else if (type === ol.geom.GeometryType.MULTILINESTRING) {
} else if (type === ol.geom.GeometryType.MULTI_LINE_STRING) {
if (this.multiCurve === false) {
child = this.writeNode('MultiLineString', geometry, null, node);
} else {
@@ -52,13 +52,13 @@ ol.parser.ogc.GML_v3 = function(opt_options) {
} else {
child = this.writeNode('Polygon', geometry, null, node);
}
} else if (type === ol.geom.GeometryType.MULTIPOLYGON) {
} else if (type === ol.geom.GeometryType.MULTI_POLYGON) {
if (this.multiSurface === false) {
child = this.writeNode('MultiPolygon', geometry, null, node);
} else {
child = this.writeNode('MultiSurface', geometry, null, node);
}
} else if (type === ol.geom.GeometryType.GEOMETRYCOLLECTION) {
} else if (type === ol.geom.GeometryType.GEOMETRY_COLLECTION) {
child = this.writeNode('MultiGeometry', geometry, null, node);
}
if (goog.isDefAndNotNull(this.srsName)) {
@@ -86,7 +86,7 @@ ol.parser.ogc.GML_v3 = function(opt_options) {
[node, coordinates, container]);
this.readChildNodes(node, coordinates);
var linestring = {
type: ol.geom.GeometryType.LINESTRING,
type: ol.geom.GeometryType.LINE_STRING,
coordinates: coordinates[0]
};
// in the case of a multi geometry this is parts
@@ -176,7 +176,7 @@ ol.parser.ogc.GML_v3 = function(opt_options) {
[node, parts, container]);
this.readChildNodes(node, parts);
container.geometry = {
type: ol.geom.GeometryType.MULTILINESTRING,
type: ol.geom.GeometryType.MULTI_LINE_STRING,
parts: parts
};
},
@@ -189,7 +189,7 @@ ol.parser.ogc.GML_v3 = function(opt_options) {
[node, parts, container]);
this.readChildNodes(node, parts);
container.geometry = {
type: ol.geom.GeometryType.MULTIPOLYGON,
type: ol.geom.GeometryType.MULTI_POLYGON,
parts: parts
};
},
@@ -425,7 +425,7 @@ goog.inherits(ol.parser.ogc.GML_v3, ol.parser.ogc.GML);
/**
* @param {ol.parser.ReadFeaturesResult} obj Object structure to write out as
* XML.
* @param {ol.parser.GMLWriteOptions=} opt_options Write options.
* @param {olx.parser.GMLWriteOptions=} opt_options Write options.
* @return {string} An string representing the XML document.
* @todo stability experimental
*/
+4 -4
View File
@@ -89,7 +89,7 @@ ol.parser.ogc.SLD_v1 = function() {
delete config.fill;
config.zIndex = this.featureTypeCounter;
rule.symbolizers.push(
new ol.style.Text(/** @type {ol.style.TextOptions} */(config))
new ol.style.Text(/** @type {olx.style.TextOptions} */(config))
);
},
'Label': function(node, symbolizer) {
@@ -197,7 +197,7 @@ ol.parser.ogc.SLD_v1 = function() {
if (goog.isDef(config.externalGraphic)) {
config.width = config.height = config.size;
symbolizer = new ol.style.Icon(
/** @type {ol.style.IconOptions} */(config));
/** @type {olx.style.IconOptions} */(config));
} else {
symbolizer = new ol.style.Shape(config);
}
@@ -689,7 +689,7 @@ ol.parser.ogc.SLD_v1.prototype.getScaleDenominatorFromResolution_ =
/**
* @param {string|Document|Element} data Data to read.
* @param {ol.parser.SLDReadOptions=} opt_options Read options.
* @param {olx.parser.SLDReadOptions=} opt_options Read options.
* @return {Object} An object representing the document.
*/
ol.parser.ogc.SLD_v1.prototype.read = function(data, opt_options) {
@@ -713,7 +713,7 @@ ol.parser.ogc.SLD_v1.prototype.read = function(data, opt_options) {
/**
* @param {Object} style The style to write out.
* @param {ol.parser.SLDWriteOptions=} opt_options Write options.
* @param {olx.parser.SLDWriteOptions=} opt_options Write options.
* @return {string} The serialized SLD.
*/
ol.parser.ogc.SLD_v1.prototype.write = function(style, opt_options) {
+8 -8
View File
@@ -28,9 +28,9 @@ ol.parser.ogc.WFS_v1 = function(opt_options) {
this.writers = {};
this.writers[this.defaultNamespaceURI] = {
/**
* @param {ol.parser.WFSWriteGetFeatureOptions} options Options.
* @param {olx.parser.WFSWriteGetFeatureOptions} options Options.
* @return {{node: Node,
* options: ol.parser.WFSWriteGetFeatureOptions}} Object.
* options: olx.parser.WFSWriteGetFeatureOptions}} Object.
* @this {ol.parser.XML}
*/
'GetFeature': function(options) {
@@ -64,7 +64,7 @@ ol.parser.ogc.WFS_v1 = function(opt_options) {
* @param {{inserts: Array.<ol.Feature>,
* updates: Array.<ol.Feature>,
* deletes: Array.<ol.Feature>,
* options: ol.parser.WFSWriteTransactionOptions}} obj Object.
* options: olx.parser.WFSWriteTransactionOptions}} obj Object.
* @return {Element} Node.
* @this {ol.parser.XML}
*/
@@ -120,7 +120,7 @@ ol.parser.ogc.WFS_v1 = function(opt_options) {
},
/**
* @param {{feature: ol.Feature,
* options: ol.parser.WFSWriteTransactionOptions}} obj Object.
* options: olx.parser.WFSWriteTransactionOptions}} obj Object.
* @return {Element} Node.
* @this {ol.parser.XML}
*/
@@ -140,7 +140,7 @@ ol.parser.ogc.WFS_v1 = function(opt_options) {
},
/**
* @param {{feature: ol.Feature,
* options: ol.parser.WFSWriteTransactionOptions}} obj Object.
* options: olx.parser.WFSWriteTransactionOptions}} obj Object.
* @return {Element} Node.
* @this {ol.parser.XML}
*/
@@ -213,7 +213,7 @@ ol.parser.ogc.WFS_v1 = function(opt_options) {
},
/**
* @param {{feature: ol.Feature,
* options: ol.parser.WFSWriteTransactionOptions}} obj Object.
* options: olx.parser.WFSWriteTransactionOptions}} obj Object.
* @return {Element} Node.
* @this {ol.parser.XML}
*/
@@ -338,7 +338,7 @@ ol.parser.ogc.WFS_v1.prototype.read = function(data) {
/**
* @param {ol.parser.WFSWriteGetFeatureOptions} options Options.
* @param {olx.parser.WFSWriteGetFeatureOptions} options Options.
* @return {string} A serialized WFS GetFeature query.
*/
ol.parser.ogc.WFS_v1.prototype.writeGetFeature = function(options) {
@@ -352,7 +352,7 @@ ol.parser.ogc.WFS_v1.prototype.writeGetFeature = function(options) {
* @param {Array.<ol.Feature>} inserts The features to insert.
* @param {Array.<ol.Feature>} updates The features to update.
* @param {Array.<ol.Feature>} deletes The features to delete.
* @param {ol.parser.WFSWriteTransactionOptions} options Write options.
* @param {olx.parser.WFSWriteTransactionOptions} options Write options.
* @return {string} A serialized WFS transaction.
*/
ol.parser.ogc.WFS_v1.prototype.writeTransaction =