Add code to capture 'clicks' on the zoombar, and deliver the zoom to that level. This matches the Google Maps expectation of being able to click on a 'rung' and zoom in to that level.

git-svn-id: http://svn.openlayers.org/trunk/openlayers@82 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
crschmidt
2006-05-17 03:17:55 +00:00
parent 9def710214
commit ebcebe6ef7

View File

@@ -47,10 +47,13 @@ OpenLayers.Control.PanZoomBar.prototype =
sz.w = 17;
var div = OpenLayers.Util.createDiv('OpenLayers_Control_PanZoomBar_Zoombar',centered,sz);
div.style.backgroundImage = "url(img/zoombar.png)";
div.onmousedown = this.doubleClick.bindAsEventListener(div);
div.onmousedown = this.divClick.bindAsEventListener(div);
div.onmousemove = this.zoomBarDivDrag.bindAsEventListener(div);
div.ondblclick = this.doubleClick.bindAsEventListener(div);
div.slider = slider;
div.getMousePosition = this.getMousePosition;
div.map = this.map;
div.div = this.div;
this.div.appendChild(div);
slider.startTop = div.style.top;
slider.getMousePosition = this.getMousePosition;
@@ -67,6 +70,14 @@ OpenLayers.Control.PanZoomBar.prototype =
centered = centered.add(0, zoomStopSize*(this.map.getZoomLevels()+1));
return centered;
},
divClick: function (evt) {
evt.xy = this.getMousePosition(evt);
var y = evt.xy.y;
var top = this.style.top;
var levels = Math.floor((y - parseInt(top))/15);
this.map.zoomTo(this.map.getZoomLevels() - levels);
Event.stop(evt);
},
getMousePosition: function (evt) {
var offsets = Position.page(this.div);
return new OpenLayers.Pixel(