[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