From 705555f1f71aec22bcd569acc4f085146406de0c Mon Sep 17 00:00:00 2001 From: euzuro Date: Wed, 21 Jun 2006 14:31:34 +0000 Subject: [PATCH] add concept of slideFactor to panzoom git-svn-id: http://svn.openlayers.org/trunk/openlayers@650 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Control/PanZoom.js | 55 ++++++++++++++++--------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/lib/OpenLayers/Control/PanZoom.js b/lib/OpenLayers/Control/PanZoom.js index 234a8ada76..e10b795cf1 100644 --- a/lib/OpenLayers/Control/PanZoom.js +++ b/lib/OpenLayers/Control/PanZoom.js @@ -11,6 +11,9 @@ OpenLayers.Control.PanZoom.Y = 4; OpenLayers.Control.PanZoom.prototype = Object.extend( new OpenLayers.Control(), { + /** @type int */ + slideFactor: 50, + /** @type Array of Button Divs */ buttons: null, @@ -80,6 +83,7 @@ OpenLayers.Control.PanZoom.prototype = btn.onclick = this.doubleClick.bindAsEventListener(btn); btn.action = id; btn.map = this.map; + btn.slideFactor = this.slideFactor; //we want to remember/reference the outer div this.buttons.push(btn); @@ -100,43 +104,40 @@ OpenLayers.Control.PanZoom.prototype = * @param {event} evt */ buttonDown: function (evt) { + + var slide = this.map.getResolution() * this.slideFactor; + var center = this.map.getCenter(); + + var newCenter = center.copyOf(); + switch (this.action) { case "panup": - var resolution = this.map.getResolution(); - var center = this.map.getCenter(); - this.map.setCenter( - new OpenLayers.LonLat(center.lon, - center.lat + (resolution * 50)) - ); + newCenter = newCenter.add( 0, slide); break; case "pandown": - var resolution = this.map.getResolution(); - var center = this.map.getCenter(); - this.map.setCenter( - new OpenLayers.LonLat(center.lon, - center.lat - (resolution * 50)) - ); + newCenter = newCenter.add( 0, -slide); break; case "panleft": - var resolution = this.map.getResolution(); - var center = this.map.getCenter(); - this.map.setCenter( - new OpenLayers.LonLat(center.lon - (resolution * 50), - center.lat) - ); + newCenter = newCenter.add( -slide, 0); break; case "panright": - var resolution = this.map.getResolution(); - var center = this.map.getCenter(); - this.map.setCenter( - new OpenLayers.LonLat(center.lon + (resolution * 50), - center.lat) - ); + newCenter = newCenter.add( slide, 0); + break; + case "zoomin": + this.map.zoomIn(); + break; + case "zoomout": + this.map.zoomOut(); + break; + case "zoomworld": + this.map.zoomExtent(); break; - case "zoomin": this.map.zoomIn(); break; - case "zoomout": this.map.zoomOut(); break; - case "zoomworld": this.map.zoomExtent(); break; } + + if (!newCenter.equals(center)) { + this.map.setCenter(newCenter); + } + Event.stop(evt); },