reassign writers instead of creating a different geometry instance. r=bartvde (closes #3407)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@12171 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -71,7 +71,7 @@ OpenLayers.Format.WFST.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
* {Object} Maps feature states to node names.
|
||||
*/
|
||||
stateName: null,
|
||||
|
||||
|
||||
/**
|
||||
* Constructor: OpenLayers.Format.WFST.v1
|
||||
* Instances of this class are not created directly. Use the
|
||||
@@ -241,42 +241,43 @@ OpenLayers.Format.WFST.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
return node;
|
||||
},
|
||||
"Transaction": function(obj) {
|
||||
var options = obj && obj.options;
|
||||
obj = obj || {};
|
||||
var options = obj.options || {};
|
||||
var node = this.createElementNSPlus("wfs:Transaction", {
|
||||
attributes: {
|
||||
service: "WFS",
|
||||
version: this.version,
|
||||
handle: options && options.handle
|
||||
handle: options.handle
|
||||
}
|
||||
});
|
||||
var i, len;
|
||||
var features = obj && obj.features;
|
||||
var features = obj.features;
|
||||
if(features) {
|
||||
var name, feature, geometry;
|
||||
// temporarily re-assigning geometry types
|
||||
if (options.multi === true) {
|
||||
OpenLayers.Util.extend(this.geometryTypes, {
|
||||
"OpenLayers.Geometry.Point": "MultiPoint",
|
||||
"OpenLayers.Geometry.LineString": (this.multiCurve === true) ? "MultiCurve": "MultiLineString",
|
||||
"OpenLayers.Geometry.Polygon": (this.multiSurface === true) ? "MultiSurface" : "MultiPolygon"
|
||||
});
|
||||
}
|
||||
var name, feature;
|
||||
for(i=0, len=features.length; i<len; ++i) {
|
||||
feature = features[i];
|
||||
name = this.stateName[feature.state];
|
||||
if(name) {
|
||||
geometry = feature.geometry;
|
||||
if (options && options.multi === true && geometry) {
|
||||
var type = geometry.CLASS_NAME.split(".").pop();
|
||||
if (type.indexOf("Multi") != 0) {
|
||||
var Cls = OpenLayers.Geometry["Multi" + type];
|
||||
if (Cls) {
|
||||
feature = OpenLayers.Util.applyDefaults({
|
||||
geometry: new Cls([geometry])
|
||||
}, feature);
|
||||
}
|
||||
}
|
||||
}
|
||||
this.writeNode(name, {
|
||||
feature: feature,
|
||||
options: options
|
||||
}, node);
|
||||
}
|
||||
}
|
||||
// switch back to original geometry types assignment
|
||||
if (options.multi === true) {
|
||||
this.setGeometryTypes();
|
||||
}
|
||||
}
|
||||
if (options && options.nativeElements) {
|
||||
if (options.nativeElements) {
|
||||
for (i=0, len=options.nativeElements.length; i<len; ++i) {
|
||||
this.writeNode("wfs:Native",
|
||||
options.nativeElements[i], node);
|
||||
|
||||
Reference in New Issue
Block a user