--- /dev/null
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/license.txt for the full
+ * text of the license. */
+/**
+ * @class
+ */
+OpenLayers.Feature = Class.create();
+OpenLayers.Feature.prototype= {
+
+ /** @type OpenLayers.Events */
+ events:null,
+
+ /** @type OpenLayers.Layer */
+ layer: null,
+
+ /** @type String */
+ id: null,
+
+ /** @type OpenLayers.LonLat */
+ lonlat:null,
+
+ /** @type Object */
+ data:null,
+
+ /** @type OpenLayers.Marker */
+ marker: null,
+
+ /** @type OpenLayers.Popup */
+ popup: null,
+
+ /**
+ * @constructor
+ *
+ * @param {OpenLayers.Layer} layer
+ * @param {String} id
+ * @param {OpenLayers.LonLat} lonlat
+ * @param {Object} data
+ */
+ initialize: function(layer, lonlat, data, id) {
+ this.layer = layer;
+ this.lonlat = lonlat;
+ this.data = (data != null) ? data : new Object();
+ this.id = (id ? id : 'f' + Math.random());
+ },
+
+ /**
+ *
+ */
+ destroy: function() {
+
+ //remove the popup from the map
+ if ((this.layer != null) && (this.layer.map != null)) {
+ if (this.popup != null) {
+ this.layer.map.removePopup(this.popup);
+ }
+ }
+
+ this.events = null;
+ this.layer = null;
+ this.id = null;
+ this.lonlat = null;
+ this.data = null;
+ if (this.marker != null) {
+ this.marker.destroy();
+ this.marker = null;
+ }
+ if (this.popup != null) {
+ this.popup.destroy();
+ this.popup = null;
+ }
+ },
+
+
+ /**
+ * @returns A Marker Object created from the 'lonlat' and 'icon' properties
+ * set in this.data. If no 'lonlat' is set, returns null. If no
+ * 'icon' is set, OpenLayers.Marker() will load the default image
+ * @type OpenLayers.Marker
+ */
+ createMarker: function() {
+
+ var marker = null;
+
+ if (this.lonlat != null) {
+ this.marker = new OpenLayers.Marker(this.lonlat, this.data.icon);
+ }
+ return this.marker;
+ },
+
+ /**
+ *
+ */
+ createPopup: function() {
+
+ if (this.lonlat != null) {
+
+ var id = this.id + "_popup";
+ var anchor = (this.marker) ? this.marker.icon : null;
+
+ this.popup = new OpenLayers.Popup.AnchoredBubble(id,
+ this.lonlat,
+ this.data.popupSize,
+ this.data.popupContentHTML,
+ anchor);
+ }
+ return this.popup;
+ },
+
+ CLASS_NAME: "OpenLayers.Feature"
+};