📄 v1.js
字号:
/* Copyright (c) 2006-2008 MetaCarta, Inc., 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/XML.js *//** * Class: OpenLayers.Format.WMC.v1 * Superclass for WMC version 1 parsers. * * Inherits from: * - <OpenLayers.Format.XML> */OpenLayers.Format.WMC.v1 = OpenLayers.Class(OpenLayers.Format.XML, { /** * Property: namespaces * {Object} Mapping of namespace aliases to namespace URIs. */ namespaces: { ol: "http://openlayers.org/context", wmc: "http://www.opengis.net/context", sld: "http://www.opengis.net/sld", xlink: "http://www.w3.org/1999/xlink", xsi: "http://www.w3.org/2001/XMLSchema-instance" }, /** * Property: schemaLocation * {String} Schema location for a particular minor version. */ schemaLocation: "", /** * Method: getNamespacePrefix * Get the namespace prefix for a given uri from the <namespaces> object. * * Returns: * {String} A namespace prefix or null if none found. */ getNamespacePrefix: function(uri) { var prefix = null; if(uri == null) { prefix = this.namespaces[this.defaultPrefix]; } else { for(prefix in this.namespaces) { if(this.namespaces[prefix] == uri) { break; } } } return prefix; }, /** * Property: defaultPrefix */ defaultPrefix: "wmc", /** * Property: rootPrefix * {String} Prefix on the root node that maps to the context namespace URI. */ rootPrefix: null, /** * Property: defaultStyleName * {String} Style name used if layer has no style param. Default is "". */ defaultStyleName: "", /** * Property: defaultStyleTitle * {String} Default style title. Default is "Default". */ defaultStyleTitle: "Default", /** * Constructor: OpenLayers.Format.WMC.v1 * Instances of this class are not created directly. Use the * <OpenLayers.Format.WMC> constructor instead. * * Parameters: * options - {Object} An optional object whose properties will be set on * this instance. */ initialize: function(options) { OpenLayers.Format.XML.prototype.initialize.apply(this, [options]); }, /** * Method: read * Read capabilities data from a string, and return a list of layers. * * Parameters: * data - {String} or {DOMElement} data to read/parse. * * Returns: * {Array} List of named layers. */ read: function(data) { if(typeof data == "string") { data = OpenLayers.Format.XML.prototype.read.apply(this, [data]); } var root = data.documentElement; this.rootPrefix = root.prefix; var context = { version: root.getAttribute("version") }; this.runChildNodes(context, root); return context; }, /** * Method: runChildNodes */ runChildNodes: function(obj, node) { var children = node.childNodes; var childNode, processor, prefix, local; for(var i=0; i<children.length; ++i) { childNode = children[i]; if(childNode.nodeType == 1) { prefix = this.getNamespacePrefix(childNode.namespaceURI); local = childNode.nodeName.split(":").pop(); processor = this["read_" + prefix + "_" + local]; if(processor) { processor.apply(this, [obj, childNode]); } } } }, /** * Method: read_wmc_General */ read_wmc_General: function(context, node) { this.runChildNodes(context, node); }, /** * Method: read_wmc_BoundingBox */ read_wmc_BoundingBox: function(context, node) { context.projection = node.getAttribute("SRS"); context.bounds = new OpenLayers.Bounds( parseFloat(node.getAttribute("minx")), parseFloat(node.getAttribute("miny")), parseFloat(node.getAttribute("maxx")), parseFloat(node.getAttribute("maxy")) ); }, /** * Method: read_wmc_LayerList */ read_wmc_LayerList: function(context, node) { context.layers = []; this.runChildNodes(context, node); }, /** * Method: read_wmc_Layer */ read_wmc_Layer: function(context, node) { var layerInfo = { params: {}, options: { visibility: (node.getAttribute("hidden") != "1") }, queryable: (node.getAttribute("queryable") == "1"), formats: [], styles: [] }; this.runChildNodes(layerInfo, node); // set properties common to multiple objects on layer options/params layerInfo.params.layers = layerInfo.name; layerInfo.options.maxExtent = layerInfo.maxExtent; // create the layer var layer = this.getLayerFromInfo(layerInfo); context.layers.push(layer); }, /** * Method: getLayerFromInfo * Create a WMS layer from a layerInfo object. * * Parameters: * layerInfo - {Object} An object representing a WMS layer. * * Returns: * {<OpenLayers.Layer.WMS>} A WMS layer. */ getLayerFromInfo: function(layerInfo) { var options = layerInfo.options; if (this.layerOptions) { OpenLayers.Util.applyDefaults(options, this.layerOptions); } var layer = new OpenLayers.Layer.WMS( layerInfo.title, layerInfo.href, layerInfo.params, options ); return layer; }, /** * Method: read_wmc_Extension */ read_wmc_Extension: function(obj, node) { this.runChildNodes(obj, node); }, /** * Method: read_ol_units */ read_ol_units: function(layerInfo, node) { layerInfo.options.units = this.getChildValue(node); }, /** * Method: read_ol_maxExtent */ read_ol_maxExtent: function(obj, node) { var bounds = new OpenLayers.Bounds( node.getAttribute("minx"), node.getAttribute("miny"), node.getAttribute("maxx"), node.getAttribute("maxy") ); obj.maxExtent = bounds; }, /** * Method: read_ol_transparent */ read_ol_transparent: function(layerInfo, node) { layerInfo.params.transparent = this.getChildValue(node); }, /** * Method: read_ol_numZoomLevels */ read_ol_numZoomLevels: function(layerInfo, node) { layerInfo.options.numZoomLevels = parseInt(this.getChildValue(node)); }, /** * Method: read_ol_opacity */ read_ol_opacity: function(layerInfo, node) { layerInfo.options.opacity = parseFloat(this.getChildValue(node)); }, /** * Method: read_ol_singleTile */ read_ol_singleTile: function(layerInfo, node) { layerInfo.options.singleTile = (this.getChildValue(node) == "true"); }, /** * Method: read_ol_isBaseLayer */ read_ol_isBaseLayer: function(layerInfo, node) { layerInfo.options.isBaseLayer = (this.getChildValue(node) == "true"); }, /** * Method: read_ol_displayInLayerSwitcher */ read_ol_displayInLayerSwitcher: function(layerInfo, node) { layerInfo.options.displayInLayerSwitcher = (this.getChildValue(node) == "true"); }, /** * Method: read_wmc_Server */ read_wmc_Server: function(layerInfo, node) { layerInfo.params.version = node.getAttribute("version"); this.runChildNodes(layerInfo, node); }, /** * Method: read_wmc_FormatList */ read_wmc_FormatList: function(layerInfo, node) { this.runChildNodes(layerInfo, node); }, /** * Method: read_wmc_Format */ read_wmc_Format: function(layerInfo, node) { var format = this.getChildValue(node); layerInfo.formats.push(format); if(node.getAttribute("current") == "1") { layerInfo.params.format = format; } }, /** * Method: read_wmc_StyleList */ read_wmc_StyleList: function(layerInfo, node) { this.runChildNodes(layerInfo, node); }, /** * Method: read_wmc_Style */ read_wmc_Style: function(layerInfo, node) { var style = {}; this.runChildNodes(style, node); if(node.getAttribute("current") == "1") { // three style types to consider // 1) linked SLD // 2) inline SLD // 3) named style // running child nodes always gets name, optionally gets href or body if(style.href) { layerInfo.params.sld = style.href; } else if(style.body) { layerInfo.params.sld_body = style.body; } else { layerInfo.params.styles = style.name; } } layerInfo.styles.push(style); }, /** * Method: read_wmc_SLD */ read_wmc_SLD: function(style, node) { this.runChildNodes(style, node); // style either comes back with an href or a body property }, /** * Method: read_sld_StyledLayerDescriptor */ read_sld_StyledLayerDescriptor: function(sld, node) { var xml = OpenLayers.Format.XML.prototype.write.apply(this, [node]); sld.body = xml; }, /** * Method: read_wmc_OnlineResource */ read_wmc_OnlineResource: function(obj, node) { obj.href = this.getAttributeNS( node, this.namespaces.xlink, "href" ); }, /** * Method: read_wmc_Name */ read_wmc_Name: function(obj, node) { var name = this.getChildValue(node); if(name) { obj.name = name; } }, /** * Method: read_wmc_Title */ read_wmc_Title: function(obj, node) { var title = this.getChildValue(node); if(title) { obj.title = title; } }, /** * Method: read_wmc_Abstract */ read_wmc_Abstract: function(obj, node) { var abst = this.getChildValue(node); if(abst) { obj["abstract"] = abst; } }, /** * Method: read_wmc_LatLonBoundingBox */ read_wmc_LatLonBoundingBox: function(layer, node) { layer.llbbox = [ parseFloat(node.getAttribute("minx")), parseFloat(node.getAttribute("miny")), parseFloat(node.getAttribute("maxx")), parseFloat(node.getAttribute("maxy")) ]; }, /** * Method: read_wmc_LegendURL */ read_wmc_LegendURL: function(style, node) { var legend = { width: node.getAttribute('width'), height: node.getAttribute('height') }; var links = node.getElementsByTagName("OnlineResource"); if(links.length > 0) { this.read_wmc_OnlineResource(legend, links[0]); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -