1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | /* 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" }); |