| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- /* Copyright (c) 2006-2011 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/Layer/Vector.js
- * @requires OpenLayers/Request/XMLHttpRequest.js
- * @requires OpenLayers/Console.js
- * @requires OpenLayers/Lang.js
- */
- /**
- * Class: OpenLayers.Layer.GML
- * Create a vector layer by parsing a GML file. The GML file is
- * passed in as a parameter.
- * *Deprecated*. To be removed in 3.0. Instead use OpenLayers.Layer.Vector
- * with Protocol.HTTP and Strategy.Fixed. Provide the protocol with a
- * format parameter to get the parser you want for your data.
- *
- * Inherits from:
- * - <OpenLayers.Layer.Vector>
- */
- OpenLayers.Layer.GML = OpenLayers.Class(OpenLayers.Layer.Vector, {
-
- /**
- * Property: loaded
- * {Boolean} Flag for whether the GML data has been loaded yet.
- */
- loaded: false,
- /**
- * APIProperty: format
- * {<OpenLayers.Format>} The format you want the data to be parsed with.
- */
- format: null,
- /**
- * APIProperty: formatOptions
- * {Object} Hash of options which should be passed to the format when it is
- * created. Must be passed in the constructor.
- */
- formatOptions: null,
-
- /**
- * Constructor: OpenLayers.Layer.GML
- * Load and parse a single file on the web, according to the format
- * provided via the 'format' option, defaulting to GML.
- *
- * Parameters:
- * name - {String}
- * url - {String} URL of a GML file.
- * options - {Object} Hashtable of extra options to tag onto the layer.
- */
- initialize: function(name, url, options) {
- var newArguments = [];
- newArguments.push(name, options);
- OpenLayers.Layer.Vector.prototype.initialize.apply(this, newArguments);
- this.url = url;
- },
- /**
- * APIMethod: setVisibility
- * Set the visibility flag for the layer and hide/show&redraw accordingly.
- * Fire event unless otherwise specified
- * GML will be loaded if the layer is being made visible for the first
- * time.
- *
- * Parameters:
- * visible - {Boolean} Whether or not to display the layer
- * (if in range)
- * noEvent - {Boolean}
- */
- setVisibility: function(visibility, noEvent) {
- OpenLayers.Layer.Vector.prototype.setVisibility.apply(this, arguments);
- if(this.visibility && !this.loaded){
- // Load the GML
- this.loadGML();
- }
- },
- /**
- * Method: moveTo
- * If layer is visible and GML has not been loaded, load GML, then load GML
- * and call OpenLayers.Layer.Vector.moveTo() to redraw at the new location.
- *
- * Parameters:
- * bounds - {Object}
- * zoomChanged - {Object}
- * minor - {Object}
- */
- moveTo:function(bounds, zoomChanged, minor) {
- OpenLayers.Layer.Vector.prototype.moveTo.apply(this, arguments);
- // Wait until initialisation is complete before loading GML
- // otherwise we can get a race condition where the root HTML DOM is
- // loaded after the GML is paited.
- // See http://trac.openlayers.org/ticket/404
- if(this.visibility && !this.loaded){
- this.loadGML();
- }
- },
- /**
- * Method: loadGML
- */
- loadGML: function() {
- if (!this.loaded) {
- this.events.triggerEvent("loadstart");
- OpenLayers.Request.GET({
- url: this.url,
- success: this.requestSuccess,
- failure: this.requestFailure,
- scope: this
- });
- this.loaded = true;
- }
- },
-
- /**
- * Method: setUrl
- * Change the URL and reload the GML
- *
- * Parameters:
- * url - {String} URL of a GML file.
- */
- setUrl:function(url) {
- this.url = url;
- this.destroyFeatures();
- this.loaded = false;
- this.loadGML();
- },
-
- /**
- * Method: requestSuccess
- * Process GML after it has been loaded.
- * Called by initialize() and loadUrl() after the GML has been loaded.
- *
- * Parameters:
- * request - {String}
- */
- requestSuccess:function(request) {
- var doc = request.responseXML;
-
- if (!doc || !doc.documentElement) {
- doc = request.responseText;
- }
-
- var options = {};
-
- OpenLayers.Util.extend(options, this.formatOptions);
- if (this.map && !this.projection.equals(this.map.getProjectionObject())) {
- options.externalProjection = this.projection;
- options.internalProjection = this.map.getProjectionObject();
- }
-
- var gml = this.format ? new this.format(options) : new OpenLayers.Format.GML(options);
- this.addFeatures(gml.read(doc));
- this.events.triggerEvent("loadend");
- },
-
- /**
- * Method: requestFailure
- * Process a failed loading of GML.
- * Called by initialize() and loadUrl() if there was a problem loading GML.
- *
- * Parameters:
- * request - {String}
- */
- requestFailure: function(request) {
- OpenLayers.Console.userError(OpenLayers.i18n("errorLoadingGML", {'url':this.url}));
- this.events.triggerEvent("loadend");
- },
- CLASS_NAME: "OpenLayers.Layer.GML"
- });
|