[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