X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/b95e9d27599ee55b2fd61a444acc3264c7637265..b2b6892a4553eeaa8d601737dee440eba0c6d6a6:/public/lib/OpenLayers/Marker.js diff --git a/public/lib/OpenLayers/Marker.js b/public/lib/OpenLayers/Marker.js new file mode 100644 index 000000000..0640295d7 --- /dev/null +++ b/public/lib/OpenLayers/Marker.js @@ -0,0 +1,109 @@ +/* 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); +}; + +