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 130 131 | /* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license. * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt * for the full text of the license. */ /** * @requires OpenLayers/Format/XML.js * @requires OpenLayers/Style.js * @requires OpenLayers/Rule.js * @requires OpenLayers/Filter/FeatureId.js * @requires OpenLayers/Filter/Logical.js * @requires OpenLayers/Filter/Comparison.js * @requires OpenLayers/Filter/Spatial.js */ /** * Class: OpenLayers.Format.SLD * Read/Wite SLD. Create a new instance with the <OpenLayers.Format.SLD> * constructor. * * Inherits from: * - <OpenLayers.Format.XML> */ OpenLayers.Format.SLD = OpenLayers.Class(OpenLayers.Format.XML, { /** * APIProperty: defaultVersion * {String} Version number to assume if none found. Default is "1.0.0". */ defaultVersion: "1.0.0", /** * APIProperty: version * {String} Specify a version string if one is known. */ version: null, /** * APIProperty: namedLayersAsArray * {Boolean} Generate a namedLayers array. If false, the namedLayers * property value will be an object keyed by layer name. Default is * false. */ namedLayersAsArray: false, /** * Property: parser * {Object} Instance of the versioned parser. Cached for multiple read and * write calls of the same version. */ parser: null, /** * Constructor: OpenLayers.Format.SLD * Create a new parser for SLD. * * 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]); }, /** * APIMethod: write * Write a SLD document given a list of styles. * * Parameters: * sld - {Object} An object representing the SLD. * options - {Object} Optional configuration object. * * Returns: * {String} An SLD document string. */ write: function(sld, options) { var version = (options && options.version) || this.version || this.defaultVersion; if(!this.parser || this.parser.VERSION != version) { var format = OpenLayers.Format.SLD[ "v" + version.replace(/\./g, "_") ]; if(!format) { throw "Can't find a SLD parser for version " + version; } this.parser = new format(this.options); } var root = this.parser.write(sld); return OpenLayers.Format.XML.prototype.write.apply(this, [root]); }, /** * APIMethod: read * Read and SLD doc and return an object representing the SLD. * * Parameters: * data - {String | DOMElement} Data to read. * options - {Object} Options for the reader. * * Returns: * {Object} An object representing the SLD. */ read: function(data, options) { if(typeof data == "string") { data = OpenLayers.Format.XML.prototype.read.apply(this, [data]); } var root = data.documentElement; var version = this.version; if(!version) { version = root.getAttribute("version"); if(!version) { version = this.defaultVersion; } } if(!this.parser || this.parser.VERSION != version) { var format = OpenLayers.Format.SLD[ "v" + version.replace(/\./g, "_") ]; if(!format) { throw "Can't find a SLD parser for version " + version; } this.parser = new format(this.options); } var sld = this.parser.read(data, options); return sld; }, CLASS_NAME: "OpenLayers.Format.SLD" }); |