diff --git a/lib/OpenLayers/Format/WFS.js b/lib/OpenLayers/Format/WFS.js index 3079a6fcef..8965a41c06 100644 --- a/lib/OpenLayers/Format/WFS.js +++ b/lib/OpenLayers/Format/WFS.js @@ -22,6 +22,9 @@ OpenLayers.Format.WFS = OpenLayers.Class(OpenLayers.Format.GML, { */ wfsns: "http://www.opengis.net/wfs", + /** + * Property: ogcns + */ ogcns: "http://www.opengis.net/ogc", /* @@ -138,11 +141,33 @@ OpenLayers.Format.WFS = OpenLayers.Class(OpenLayers.Format.GML, { propertyNode.appendChild(nameNode); var valueNode = this.createElementNS(this.wfsns, 'wfs:Value'); - valueNode.appendChild(this.buildGeometryNode(feature.geometry)); + + var geometryNode = this.buildGeometryNode(feature.geometry); + + if(feature.layer){ + geometryNode.setAttribute( + "srsName", feature.layer.projection.getCode() + ); + } + + valueNode.appendChild(geometryNode); propertyNode.appendChild(valueNode); updateNode.appendChild(propertyNode); + // add in attributes + for(var propName in feature.attributes) { + propertyNode = this.createElementNS(this.wfsns, 'wfs:Property'); + nameNode = this.createElementNS(this.wfsns, 'wfs:Name'); + nameNode.appendChild(this.createTextNode(propName)); + propertyNode.appendChild(nameNode); + valueNode = this.createElementNS(this.wfsns, 'wfs:Value'); + valueNode.appendChild(this.createTextNode(feature.attributes[propName])); + propertyNode.appendChild(valueNode); + updateNode.appendChild(propertyNode); + } + + var filterNode = this.createElementNS(this.ogcns, 'ogc:Filter'); var filterIdNode = this.createElementNS(this.ogcns, 'ogc:FeatureId'); filterIdNode.setAttribute("fid", feature.fid);