If we're zooming with this tool, we only want to actually change the zoom if

the box was bigger than 5px in one direction or another. If it was smaller 
than that, the user probably just clicked, rather than drawing a box, because 
the MouseToolbar icon is kind of misleading.


git-svn-id: http://svn.openlayers.org/branches/openlayers/2.0@1338 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
crschmidt
2006-08-23 20:37:16 +00:00
parent 2ed1ce98b3
commit 00dfc669d2
2 changed files with 38 additions and 24 deletions

View File

@@ -60,6 +60,7 @@ OpenLayers.Control.MouseDefaults.prototype =
var newCenter = this.map.getLonLatFromViewPortPx( evt.xy ); var newCenter = this.map.getLonLatFromViewPortPx( evt.xy );
this.map.setCenter(newCenter, this.map.zoom + 1); this.map.setCenter(newCenter, this.map.zoom + 1);
Event.stop(evt); Event.stop(evt);
return false;
}, },
/** /**
@@ -124,6 +125,8 @@ OpenLayers.Control.MouseDefaults.prototype =
defaultMouseUp: function (evt) { defaultMouseUp: function (evt) {
if (!Event.isLeftClick(evt)) return; if (!Event.isLeftClick(evt)) return;
if (this.zoomBox) { if (this.zoomBox) {
if (Math.abs(this.mouseDragStart.x - evt.xy.x) > 5 ||
Math.abs(this.mouseDragStart.y - evt.xy.y) > 5) {
var start = this.map.getLonLatFromViewPortPx( this.mouseDragStart ); var start = this.map.getLonLatFromViewPortPx( this.mouseDragStart );
var end = this.map.getLonLatFromViewPortPx( evt.xy ); var end = this.map.getLonLatFromViewPortPx( evt.xy );
var top = Math.max(start.lat, end.lat); var top = Math.max(start.lat, end.lat);
@@ -136,8 +139,10 @@ OpenLayers.Control.MouseDefaults.prototype =
(start.lon + end.lon) / 2, (start.lon + end.lon) / 2,
(start.lat + end.lat) / 2 (start.lat + end.lat) / 2
), zoom); ), zoom);
}
this.map.viewPortDiv.removeChild(document.getElementById("zoomBox")); this.map.viewPortDiv.removeChild(document.getElementById("zoomBox"));
this.zoomBox = null; this.zoomBox = null;
} else { } else {
if (this.performedDrag) { if (this.performedDrag) {
this.map.setCenter(this.map.center); this.map.setCenter(this.map.center);

View File

@@ -95,6 +95,8 @@ OpenLayers.Control.MouseToolbar.prototype =
this.performedDrag = false; this.performedDrag = false;
var newCenter = this.map.getLonLatFromViewPortPx( evt.xy ); var newCenter = this.map.getLonLatFromViewPortPx( evt.xy );
this.map.setCenter(newCenter, this.map.zoom + 2); this.map.setCenter(newCenter, this.map.zoom + 2);
Event.stop(evt);
return false;
}, },
/** /**
@@ -238,6 +240,12 @@ OpenLayers.Control.MouseToolbar.prototype =
if (!Event.isLeftClick(evt)) return; if (!Event.isLeftClick(evt)) return;
switch (this.mode) { switch (this.mode) {
case "zoombox": case "zoombox":
console.log(this.mouseDragStart, evt.xy);
console.log(Math.abs(this.mouseDragStart.x - evt.xy.x) > 5 || Math.abs((this.mouseDragStart.y - evt.xy.y)) > 5);
console.log(Math.abs(this.mouseDragStart.x-evt.xy.x) > 5);
console.log(Math.abs(this.mouseDragStart.y-evt.xy.y)>5);
if (Math.abs(this.mouseDragStart.x - evt.xy.x) > 5 ||
Math.abs(this.mouseDragStart.y - evt.xy.y) > 5) {
var start = this.map.getLonLatFromViewPortPx( this.mouseDragStart ); var start = this.map.getLonLatFromViewPortPx( this.mouseDragStart );
var end = this.map.getLonLatFromViewPortPx( evt.xy ); var end = this.map.getLonLatFromViewPortPx( evt.xy );
var top = Math.max(start.lat, end.lat); var top = Math.max(start.lat, end.lat);
@@ -250,6 +258,7 @@ OpenLayers.Control.MouseToolbar.prototype =
(start.lon + end.lon) / 2, (start.lon + end.lon) / 2,
(start.lat + end.lat) / 2 (start.lat + end.lat) / 2
), zoom); ), zoom);
}
this.map.viewPortDiv.removeChild(document.getElementById("zoomBox")); this.map.viewPortDiv.removeChild(document.getElementById("zoomBox"));
this.zoomBox = null; this.zoomBox = null;
this.leaveMode(); this.leaveMode();