summaryrefslogtreecommitdiff
path: root/misc/openlayers/lib/OpenLayers/Layer/GeoRSS.js
diff options
context:
space:
mode:
Diffstat (limited to 'misc/openlayers/lib/OpenLayers/Layer/GeoRSS.js')
-rw-r--r--misc/openlayers/lib/OpenLayers/Layer/GeoRSS.js265
1 files changed, 0 insertions, 265 deletions
diff --git a/misc/openlayers/lib/OpenLayers/Layer/GeoRSS.js b/misc/openlayers/lib/OpenLayers/Layer/GeoRSS.js
deleted file mode 100644
index 564d071..0000000
--- a/misc/openlayers/lib/OpenLayers/Layer/GeoRSS.js
+++ /dev/null
@@ -1,265 +0,0 @@
-/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
- * full list of contributors). Published under the 2-clause BSD license.
- * See license.txt in the OpenLayers distribution or repository for the
- * full text of the license. */
-
-
-/**
- * @requires OpenLayers/Layer/Markers.js
- * @requires OpenLayers/Request/XMLHttpRequest.js
- */
-
-/**
- * Class: OpenLayers.Layer.GeoRSS
- * Add GeoRSS Point features to your map.
- *
- * Inherits from:
- * - <OpenLayers.Layer.Markers>
- */
-OpenLayers.Layer.GeoRSS = OpenLayers.Class(OpenLayers.Layer.Markers, {
-
- /**
- * Property: location
- * {String} store url of text file
- */
- location: null,
-
- /**
- * Property: features
- * {Array(<OpenLayers.Feature>)}
- */
- features: 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,
-
- /**
- * Property: selectedFeature
- * {<OpenLayers.Feature>}
- */
- selectedFeature: null,
-
- /**
- * APIProperty: icon
- * {<OpenLayers.Icon>}. This determines the Icon to be used on the map
- * for this GeoRSS layer.
- */
- icon: null,
-
- /**
- * APIProperty: popupSize
- * {<OpenLayers.Size>} This determines the size of GeoRSS popups. If
- * not provided, defaults to 250px by 120px.
- */
- popupSize: null,
-
- /**
- * APIProperty: useFeedTitle
- * {Boolean} Set layer.name to the first <title> element in the feed. Default is true.
- */
- useFeedTitle: true,
-
- /**
- * Constructor: OpenLayers.Layer.GeoRSS
- * Create a GeoRSS Layer.
- *
- * Parameters:
- * name - {String}
- * location - {String}
- * options - {Object}
- */
- initialize: function(name, location, options) {
- OpenLayers.Layer.Markers.prototype.initialize.apply(this, [name, options]);
- this.location = location;
- this.features = [];
- },
-
- /**
- * Method: destroy
- */
- destroy: function() {
- // Warning: Layer.Markers.destroy() must be called prior to calling
- // clearFeatures() here, otherwise we leak memory. Indeed, if
- // Layer.Markers.destroy() is called after clearFeatures(), it won't be
- // able to remove the marker image elements from the layer's div since
- // the markers will have been destroyed by clearFeatures().
- OpenLayers.Layer.Markers.prototype.destroy.apply(this, arguments);
- this.clearFeatures();
- this.features = null;
- },
-
- /**
- * Method: loadRSS
- * Start the load of the RSS data. Don't do this when we first add the layer,
- * since we may not be visible at any point, and it would therefore be a waste.
- */
- loadRSS: function() {
- if (!this.loaded) {
- this.events.triggerEvent("loadstart");
- OpenLayers.Request.GET({
- url: this.location,
- success: this.parseData,
- scope: this
- });
- this.loaded = true;
- }
- },
-
- /**
- * Method: moveTo
- * If layer is visible and RSS has not been loaded, load RSS.
- *
- * Parameters:
- * bounds - {Object}
- * zoomChanged - {Object}
- * minor - {Object}
- */
- moveTo:function(bounds, zoomChanged, minor) {
- OpenLayers.Layer.Markers.prototype.moveTo.apply(this, arguments);
- if(this.visibility && !this.loaded){
- this.loadRSS();
- }
- },
-
- /**
- * Method: parseData
- * Parse the data returned from the Events call.
- *
- * Parameters:
- * ajaxRequest - {<OpenLayers.Request.XMLHttpRequest>}
- */
- parseData: function(ajaxRequest) {
- var doc = ajaxRequest.responseXML;
- if (!doc || !doc.documentElement) {
- doc = OpenLayers.Format.XML.prototype.read(ajaxRequest.responseText);
- }
-
- if (this.useFeedTitle) {
- var name = null;
- try {
- name = doc.getElementsByTagNameNS('*', 'title')[0].firstChild.nodeValue;
- }
- catch (e) {
- name = doc.getElementsByTagName('title')[0].firstChild.nodeValue;
- }
- if (name) {
- this.setName(name);
- }
- }
-
- 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 format = new OpenLayers.Format.GeoRSS(options);
- var features = format.read(doc);
-
- for (var i=0, len=features.length; i<len; i++) {
- var data = {};
- var feature = features[i];
-
- // we don't support features with no geometry in the GeoRSS
- // layer at this time.
- if (!feature.geometry) {
- continue;
- }
-
- var title = feature.attributes.title ?
- feature.attributes.title : "Untitled";
-
- var description = feature.attributes.description ?
- feature.attributes.description : "No description.";
-
- var link = feature.attributes.link ? feature.attributes.link : "";
-
- var location = feature.geometry.getBounds().getCenterLonLat();
-
-
- data.icon = this.icon == null ?
- OpenLayers.Marker.defaultIcon() :
- this.icon.clone();
-
- data.popupSize = this.popupSize ?
- this.popupSize.clone() :
- new OpenLayers.Size(250, 120);
-
- if (title || description) {
- // we have supplemental data, store them.
- data.title = title;
- data.description = description;
-
- var contentHTML = '<div class="olLayerGeoRSSClose">[x]</div>';
- contentHTML += '<div class="olLayerGeoRSSTitle">';
- if (link) {
- contentHTML += '<a class="link" href="'+link+'" target="_blank">';
- }
- contentHTML += title;
- if (link) {
- contentHTML += '</a>';
- }
- contentHTML += '</div>';
- contentHTML += '<div style="" class="olLayerGeoRSSDescription">';
- contentHTML += description;
- contentHTML += '</div>';
- data['popupContentHTML'] = contentHTML;
- }
- var feature = new OpenLayers.Feature(this, location, data);
- this.features.push(feature);
- var marker = feature.createMarker();
- marker.events.register('click', feature, this.markerClick);
- this.addMarker(marker);
- }
- this.events.triggerEvent("loadend");
- },
-
- /**
- * Method: markerClick
- *
- * Parameters:
- * evt - {Event}
- */
- markerClick: function(evt) {
- var sameMarkerClicked = (this == this.layer.selectedFeature);
- this.layer.selectedFeature = (!sameMarkerClicked) ? this : null;
- for(var i=0, len=this.layer.map.popups.length; i<len; i++) {
- this.layer.map.removePopup(this.layer.map.popups[i]);
- }
- if (!sameMarkerClicked) {
- var popup = this.createPopup();
- OpenLayers.Event.observe(popup.div, "click",
- OpenLayers.Function.bind(function() {
- for(var i=0, len=this.layer.map.popups.length; i<len; i++) {
- this.layer.map.removePopup(this.layer.map.popups[i]);
- }
- }, this)
- );
- this.layer.map.addPopup(popup);
- }
- OpenLayers.Event.stop(evt);
- },
-
- /**
- * Method: clearFeatures
- * Destroy all features in this layer.
- */
- clearFeatures: function() {
- if (this.features != null) {
- while(this.features.length > 0) {
- var feature = this.features[0];
- OpenLayers.Util.removeItem(this.features, feature);
- feature.destroy();
- }
- }
- },
-
- CLASS_NAME: "OpenLayers.Layer.GeoRSS"
-});