|
/* Copyright (c) 2006-2010 by OpenLayers Contributors (see authors.txt for |
|
* full list of contributors). Published under the Clear BSD license. |
|
* See http://svn.openlayers.org/trunk/openlayers/license.txt for the |
|
* full text of the license. */ |
|
|
|
/** |
|
* @requires OpenLayers/Format/WMSCapabilities/v1.js |
|
*/ |
|
|
|
/** |
|
* Class: OpenLayers.Format.WMSCapabilities/v1_3 |
|
* Abstract base class for WMS Capabilities version 1.3.X. |
|
* SLD 1.1.0 adds in the extra operations DescribeLayer and GetLegendGraphic, |
|
* see: http://schemas.opengis.net/sld/1.1.0/sld_capabilities.xsd |
|
* |
|
* Inherits from: |
|
* - <OpenLayers.Format.WMSCapabilities.v1> |
|
*/ |
|
OpenLayers.Format.WMSCapabilities.v1_3 = OpenLayers.Class( |
|
OpenLayers.Format.WMSCapabilities.v1, { |
|
|
|
/** |
|
* Property: readers |
|
* Contains public functions, grouped by namespace prefix, that will |
|
* be applied when a namespaced node is found matching the function |
|
* name. The function will be applied in the scope of this parser |
|
* with two arguments: the node being read and a context object passed |
|
* from the parent. |
|
*/ |
|
readers: { |
|
"wms": OpenLayers.Util.applyDefaults({ |
|
"WMS_Capabilities": function(node, obj) { |
|
this.readChildNodes(node, obj); |
|
}, |
|
"LayerLimit": function(node, obj) { |
|
obj.layerLimit = parseInt(this.getChildValue(node)); |
|
}, |
|
"MaxWidth": function(node, obj) { |
|
obj.maxWidth = parseInt(this.getChildValue(node)); |
|
}, |
|
"MaxHeight": function(node, obj) { |
|
obj.maxHeight = parseInt(this.getChildValue(node)); |
|
}, |
|
"BoundingBox": function(node, obj) { |
|
var bbox = OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"].BoundingBox.apply(this, [node, obj]); |
|
bbox.srs = node.getAttribute("CRS"); |
|
obj.bbox[bbox.srs] = bbox; |
|
}, |
|
"CRS": function(node, obj) { |
|
// CRS is the synonym of SRS |
|
this.readers.wms.SRS.apply(this, [node, obj]); |
|
}, |
|
"EX_GeographicBoundingBox": function(node, obj) { |
|
// replacement of LatLonBoundingBox |
|
obj.llbbox = []; |
|
this.readChildNodes(node, obj.llbbox); |
|
|
|
}, |
|
"westBoundLongitude": function(node, obj) { |
|
obj[0] = this.getChildValue(node); |
|
}, |
|
"eastBoundLongitude": function(node, obj) { |
|
obj[2] = this.getChildValue(node); |
|
}, |
|
"southBoundLatitude": function(node, obj) { |
|
obj[1] = this.getChildValue(node); |
|
}, |
|
"northBoundLatitude": function(node, obj) { |
|
obj[3] = this.getChildValue(node); |
|
}, |
|
"MinScaleDenominator": function(node, obj) { |
|
obj.maxScale = parseFloat(this.getChildValue(node)).toPrecision(16); |
|
}, |
|
"MaxScaleDenominator": function(node, obj) { |
|
obj.minScale = parseFloat(this.getChildValue(node)).toPrecision(16); |
|
}, |
|
"Dimension": function(node, obj) { |
|
// dimension has extra attributes: default, multipleValues, |
|
// nearestValue, current which used to be part of Extent. It now |
|
// also contains the values. |
|
var name = node.getAttribute("name").toLowerCase(); |
|
var dim = { |
|
name: name, |
|
units: node.getAttribute("units"), |
|
unitsymbol: node.getAttribute("unitSymbol"), |
|
nearestVal: node.getAttribute("nearestValue") === "1", |
|
multipleVal: node.getAttribute("multipleValues") === "1", |
|
"default": node.getAttribute("default") || "", |
|
current: node.getAttribute("current") === "1", |
|
values: this.getChildValue(node).split(",") |
|
|
|
}; |
|
// Theoretically there can be more dimensions with the same |
|
// name, but with a different unit. Until we meet such a case, |
|
// let's just keep the same structure as the WMS 1.1 |
|
// GetCapabilities parser uses. We will store the last |
|
// one encountered. |
|
obj.dimensions[dim.name] = dim; |
|
}, |
|
"Keyword": function(node, obj) { |
|
// TODO: should we change the structure of keyword in v1.js? |
|
// Make it an object with a value instead of a string? |
|
var keyword = {value: this.getChildValue(node), |
|
vocabulary: node.getAttribute("vocabulary")}; |
|
if (obj.keywords) { |
|
obj.keywords.push(keyword); |
|
} |
|
} |
|
}, OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"]), |
|
"sld": { |
|
"UserDefinedSymbolization": function(node, obj) { |
|
this.readers.wms.UserDefinedSymbolization.apply(this, [node, obj]); |
|
// add the two extra attributes |
|
obj.userSymbols.inlineFeature = parseInt(node.getAttribute("InlineFeature")) == 1; |
|
obj.userSymbols.remoteWCS = parseInt(node.getAttribute("RemoteWCS")) == 1; |
|
}, |
|
"DescribeLayer": function(node, obj) { |
|
this.readers.wms.DescribeLayer.apply(this, [node, obj]); |
|
}, |
|
"GetLegendGraphic": function(node, obj) { |
|
this.readers.wms.GetLegendGraphic.apply(this, [node, obj]); |
|
} |
|
} |
|
}, |
|
|
|
CLASS_NAME: "OpenLayers.Format.WMSCapabilities.v1_3" |
|
|
|
}); |
|
|