[fusion-commits] r1510 - sandbox/jx2/widgets

svn_fusion at osgeo.org svn_fusion at osgeo.org
Tue Sep 9 21:10:28 EDT 2008


Author: pagameba
Date: 2008-09-09 21:10:27 -0400 (Tue, 09 Sep 2008)
New Revision: 1510

Modified:
   sandbox/jx2/widgets/Navigator.js
Log:
fix navigator to use a logarithmic scale so its not quite so useless

Modified: sandbox/jx2/widgets/Navigator.js
===================================================================
--- sandbox/jx2/widgets/Navigator.js	2008-09-09 21:17:25 UTC (rev 1509)
+++ sandbox/jx2/widgets/Navigator.js	2008-09-10 01:10:27 UTC (rev 1510)
@@ -158,13 +158,15 @@
 
         this.slider = new Slider(sliderDiv, sliderHandle, {
             mode: 'vertical',
-            steps: 85,
+            steps: 81,
             onComplete: OpenLayers.Function.bind(this.scaleChanged, this)
         });
-
+        // precompute this for efficiency
+        this.LN9 = Math.log(9);
+        
         this.getMap().registerForEvent(Fusion.Event.MAP_LOADED, OpenLayers.Function.bind(this.updateSlider, this));
         this.getMap().registerForEvent(Fusion.Event.MAP_RESIZED, checkPosition);
-        this.getMap().registerForEvent(Fusion.Event.MAP_EXTENTS_CHANGED, OpenLayers.Function.bind(this.updateValue, this));
+        this.getMap().registerForEvent(Fusion.Event.MAP_EXTENTS_CHANGED, OpenLayers.Function.bind(this.updateSlider, this));
         this.getMap().registerForEvent(Fusion.Event.MAP_BUSY_CHANGED, OpenLayers.Function.bind(this.busyChanged, this));
     },
 
@@ -176,17 +178,20 @@
           map.deactivateWidget(map.oActiveWidget);
         }
         if (!this.bInternalChange) {
-            var map = this.getMap();
-            var center = map.getCurrentCenter();
-            var size = map.getSize();
-            var w_deg = size.w * value;
-            var h_deg = size.h * value;
-            map.setExtents(new OpenLayers.Bounds(center.x - w_deg / 2,
-                                               center.y - h_deg / 2,
-                                               center.x + w_deg / 2,
-                                               center.y + h_deg / 2));
+            var map = this.getMap().oMapOL;
+            var baseLayer = map.baseLayer;
+            if (baseLayer.singleTile) {
+                var scale = Math.pow(9,value/9);
+                var resolution = OpenLayers.Util.getResolutionFromScale(scale, baseLayer.units);
+                resolution += baseLayer.minResolution;
+                this.bInternalChange = true;
+                map.zoomTo(map.getZoomForResolution(resolution));
+                this.bInternalChange = false;
+            } else {
+                var res = olMap.baseLayer.resolutions;
+            }
         }
-        //Event.stop(e);
+
         if (activeWidget) {
           map.activateWidget(activeWidget);
         }
@@ -216,12 +221,14 @@
     },
 
     updateSlider: function() {
-        var olMap = this.getMap().oMapOL;
-        if (olMap.baseLayer.singleTile) {
-            //this.slider.values = [];
-            //this.slider.range = $R(olMap.baseLayer.minResolution,olMap.baseLayer.maxResolution);
+        var map = this.getMap().oMapOL;
+        baseLayer = map.baseLayer
+        if (baseLayer.singleTile) {
+            var resolution = map.getResolution() - baseLayer.minResolution;
+            var scale = OpenLayers.Util.getScaleFromResolution(resolution, baseLayer.units);
+            var position = 9*Math.log(scale)/this.LN9;
             this.bInternalChange = true;
-            //this.slider.setValue(olMap.getResolution());
+            this.slider.set(position);
             this.bInternalChange = false;
         } else {
             var res = olMap.baseLayer.resolutions;
@@ -235,16 +242,8 @@
                 //this.slider.values.push(parseInt((r/max)*91));
             }
         }
-        //this.slider.setEnabled();
     },
 
-    updateValue: function() {
-        var olMap = this.getMap().oMapOL;
-        this.bInternalChange = true;
-        //this.slider.setValue(olMap.getResolution());
-        this.bInternalChange = false;
-    },
-
     pan: function(x,y,e) {
         //console.log('pan by : ' + x + ', ' + y);
         var map = this.getMap();
@@ -275,7 +274,7 @@
         }
         var center = map.getCurrentCenter();
         map.zoom(center.x, center.y, factor);
-        Event.stop(e);
+        OpenLayers.Event.stop(e);
         if (activeWidget) {
           map.activateWidget(activeWidget);
         }



More information about the fusion-commits mailing list