[OpenLayers-Commits] r4775 - sandbox/ianmayo/openlayers/lib/OpenLayers/Control

commits at openlayers.org commits at openlayers.org
Wed Oct 3 08:17:35 EDT 2007


Author: ianmayo
Date: 2007-10-03 08:17:25 -0400 (Wed, 03 Oct 2007)
New Revision: 4775

Added:
   sandbox/ianmayo/openlayers/lib/OpenLayers/Control/ScaleLine.js
Log:
First generation of my scale control

Added: sandbox/ianmayo/openlayers/lib/OpenLayers/Control/ScaleLine.js
===================================================================
--- sandbox/ianmayo/openlayers/lib/OpenLayers/Control/ScaleLine.js	                        (rev 0)
+++ sandbox/ianmayo/openlayers/lib/OpenLayers/Control/ScaleLine.js	2007-10-03 12:17:25 UTC (rev 4775)
@@ -0,0 +1,83 @@
+/* Copyright (c) 2006-2007 MetaCarta, Inc., published under a modified BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+ * for the full text of the license. */
+
+
+/**
+ * @requires OpenLayers/Control.js
+ *
+ * Class: OpenLayers.Control.ScaleLine
+ * Display a small line indicator representing the current map scale on the map.
+ * Inherits from:
+ *  - <OpenLayers.Control>
+ */
+OpenLayers.Control.ScaleLine = OpenLayers.Class(OpenLayers.Control, {
+    
+    /**
+     * Parameter: element
+     * {DOMElement}
+     */
+    element: null,
+    
+    /**
+     * Constructor: OpenLayers.Control.ScaleLine
+     * 
+     * Parameters:
+     * element - {DOMElement} 
+     * options - {Object} 
+     */
+    initialize: function(element, options) {
+        OpenLayers.Control.prototype.initialize.apply(this, [options]);
+        this.element = OpenLayers.Util.getElement(element);        
+    },
+
+    /**
+     * Method: draw
+     * 
+     * Returns:
+     * {DOMElemen}
+     */    
+    draw: function() {
+        OpenLayers.Control.prototype.draw.apply(this, arguments);
+        if (!this.element) {
+            this.element = document.createElement("div");
+            this.div.className = this.displayClass;
+            this.element.style.fontSize="smaller";
+            this.div.appendChild(this.element);
+        }
+        this.map.events.register( 'moveend', this, this.updateScale);
+        this.updateScale();
+        return this.div;
+    },
+   
+    /**
+     * Method: updateScale
+     */
+    updateScale: function() {
+        var scale = this.map.getScale();
+        if (!scale) return;
+		
+		// right, we're to plot scale in metres first. how many metres in scale?
+		// 
+		
+		// ok.  how large is the map?
+		
+		// now, 
+		
+		
+		
+
+        if (scale >= 9500 && scale <= 950000) {
+            scale = Math.round(scale / 1000) + "K";
+        } else if (scale >= 950000) {
+            scale = Math.round(scale / 1000000) + "M";
+        } else {
+            scale = Math.round(scale);
+        }    
+        
+        this.element.innerHTML = "ScaleLine = 1 : " + scale;
+    }, 
+
+    CLASS_NAME: "OpenLayers.Control.ScaleLine"
+});
+



More information about the Commits mailing list