in JSLib/src/odata-gml.js [428:491]
var gmlReadODataSpatialValue = function (domElement, isGeography) {
/// <summary>Reads the value of a GML DOM element a spatial value in an OData XML document.</summary>
/// <param name="domElement">DOM element.</param>
/// <param name="isGeography" type="Boolean" Optional="True">Flag indicating if the value uses a geographic reference system or not.<param>
/// <remarks>
/// When using a geographic reference system, the first component of all the coordinates in each <pos> element in the GML DOM tree is the Latitude and
/// will be deserialized as the second component of each position coordinates in the resulting GeoJSON object.
/// </remarks>
/// <returns type="Array">Array containing an array of doubles for each coordinate of the polygon.</returns>
var localName = xmlLocalName(domElement);
var reader;
switch (localName) {
case "Point":
reader = gmlReadODataPoint;
break;
case "Polygon":
reader = gmlReadODataPolygon;
break;
case "LineString":
reader = gmlReadODataLineString;
break;
case "MultiPoint":
reader = gmlReadODataMultiPoint;
break;
case "MultiCurve":
reader = gmlReadODataMultiLineString;
break;
case "MultiSurface":
reader = gmlReadODataMultiPolygon;
break;
case "MultiGeometry":
reader = gmlReadODataCollection;
break;
default:
throw { message: "Unsupported element: " + localName, element: domElement };
}
var value = reader(domElement, isGeography);
// Read the CRS
// WCF Data Services qualifies the srsName attribute withing the GML namespace; however
// other end points might no do this as per the standard.
var srsName = xmlAttributeValue(domElement, "srsName", gmlXmlNs) ||
xmlAttributeValue(domElement, "srsName");
if (srsName) {
if (srsName.indexOf(gmlSrsPrefix) !== 0) {
throw { message: "Unsupported srs name: " + srsName, element: domElement };
}
var crsId = srsName.substring(gmlSrsPrefix.length);
if (crsId) {
value.crs = {
type: "name",
properties: {
name: "EPSG:" + crsId
}
};
}
}
return value;
};