Added geometry parsing for Mapserver output. Thanks bartvde for the

patch. r=elemoine,me (closes #1976)


git-svn-id: http://svn.openlayers.org/trunk/openlayers@9178 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
ahocevar
2009-04-03 16:42:26 +00:00
parent 8b0208ae44
commit 467dff424c
2 changed files with 66 additions and 2 deletions

View File

@@ -40,6 +40,13 @@ OpenLayers.Format.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Format.XML, {
trimComma: (/\s*,\s*/g)
},
/**
* Property: gmlFormat
* {<OpenLayers.Format.GML>} internal GML format for parsing geometries
* in msGMLOutput
*/
gmlFormat: null,
/**
* Constructor: OpenLayers.Format.WMSGetFeatureInfo
* Create a new parser for WMS GetFeatureInfo responses
@@ -110,7 +117,7 @@ OpenLayers.Format.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Format.XML, {
if (featureNodes) {
for (var j = 0; j < featureNodes.length; j++) {
var featureNode = featureNodes[j];
var geom = null;
var geom = this.parseGeometry(featureNode);
var attributes = this.parseAttributes(featureNode);
var feature = new OpenLayers.Feature.Vector(geom,
attributes, null);
@@ -239,6 +246,31 @@ OpenLayers.Format.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Format.XML, {
return attributes;
},
/**
* Method: parseGeometry
* Parse the geometry out of the node using Format.GML
*
* Parameters:
* node - {<DOMElement>}
*
* Returns:
* {<OpenLayers.Geometry>} the geometry object
*/
parseGeometry: function(node) {
// we need to use the old Format.GML parser since we do not know the
// geometry name
if (!this.gmlFormat) {
this.gmlFormat = new OpenLayers.Format.GML();
}
var feature = this.gmlFormat.parseFeature(node);
var geometry = null;
if (feature && feature.geometry) {
geometry = feature.geometry.clone();
feature.destroy();
}
return geometry;
},
CLASS_NAME: "OpenLayers.Format.WMSGetFeatureInfo"
});