--- /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.Marker = Class.create();
+OpenLayers.Marker.prototype = {
+
+ /** @type OpenLayers.Icon */
+ icon: null,
+
+ /** location of object
+ * @type OpenLayers.LonLat */
+ lonlat: null,
+
+ /** @type OpenLayers.Events*/
+ events: null,
+
+ /** @type OpenLayers.Map */
+ map: null,
+
+ /**
+ * @constructor
+ *
+ * @param {OpenLayers.Icon} icon
+ * @param {OpenLayers.LonLat lonlat
+ */
+ initialize: function(lonlat, icon) {
+ this.lonlat = lonlat;
+ this.icon = (icon) ? icon : OpenLayers.Marker.defaultIcon();
+
+ this.events = new OpenLayers.Events(this, this.icon.imageDiv, null);
+ },
+
+ destroy: function() {
+ this.map = null;
+
+ if (this.icon != null) {
+ this.icon.destroy();
+ this.icon = null;
+ }
+ },
+
+ /**
+ * @param {OpenLayers.Pixel} px
+ *
+ * @return A new DOM Image with this markerĀ“s icon set at the
+ * location passed-in
+ * @type DOMElement
+ */
+ draw: function(px) {
+ return this.icon.draw(px);
+ },
+
+ /**
+ * @param {OpenLayers.Pixel} px
+ */
+ moveTo: function (px) {
+ if ((px != null) && (this.icon != null)) {
+ this.icon.moveTo(px);
+ }
+ },
+
+ /**
+ * @returns Whether or not the marker is currently visible on screen.
+ * @type Boolean
+ */
+ onScreen:function() {
+
+ var onScreen = false;
+ if (this.map) {
+ var screenBounds = this.map.getExtent();
+ onScreen = screenBounds.contains(this.lonlat.lon, this.lonlat.lat);
+ }
+ return onScreen;
+ },
+
+ /**
+ * @param {float} inflate
+ */
+ inflate: function(inflate) {
+ if (this.icon) {
+ var newSize = new OpenLayers.Size(this.icon.size.w * inflate,
+ this.icon.size.h * inflate);
+ this.icon.setSize(newSize);
+ }
+ },
+
+ /** @final @type String */
+ CLASS_NAME: "OpenLayers.Marker"
+};
+
+
+/**
+ * @returns A default OpenLayers.Icon to use for a marker
+ * @type OpenLayers.Icon
+ */
+OpenLayers.Marker.defaultIcon = function() {
+ var url = OpenLayers.Util.getImagesLocation() + "marker.png";
+ var size = new OpenLayers.Size(21, 25);
+ var calculateOffset = function(size) {
+ return new OpenLayers.Pixel(-(size.w/2), -size.h);
+ };
+
+ return new OpenLayers.Icon(url, size, null, calculateOffset);
+};
+
+