OpenLayers OpenLayers

Changeset 1356

Show
Ignore:
Timestamp:
08/24/06 09:21:45 (2 years ago)
Author:
crschmidt
Message:

Change zoomBox function to be a 'zoom in' if the user draws a very small box.
In order to remove duplicate code, make MouseToolbar a subclass of
MouseDefaults, and create zoomBoxEnd method.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/openlayers/2.0/lib/OpenLayers/Control/MouseDefaults.js

    r1338 r1356  
    126126        if (!Event.isLeftClick(evt)) return; 
    127127        if (this.zoomBox) { 
    128             if (Math.abs(this.mouseDragStart.x - evt.xy.x) > 5 ||     
    129                 Math.abs(this.mouseDragStart.y - evt.xy.y) > 5) {    
    130                 var start = this.map.getLonLatFromViewPortPx( this.mouseDragStart );  
    131                 var end = this.map.getLonLatFromViewPortPx( evt.xy ); 
    132                 var top = Math.max(start.lat, end.lat); 
    133                 var bottom = Math.min(start.lat, end.lat); 
    134                 var left = Math.min(start.lon, end.lon); 
    135                 var right = Math.max(start.lon, end.lon); 
    136                 var bounds = new OpenLayers.Bounds(left, bottom, right, top); 
    137                 var zoom = this.map.getZoomForExtent(bounds); 
    138                 this.map.setCenter(new OpenLayers.LonLat( 
    139                   (start.lon + end.lon) / 2, 
    140                   (start.lat + end.lat) / 2 
    141                  ), zoom); 
    142             } 
    143             this.map.viewPortDiv.removeChild(document.getElementById("zoomBox")); 
    144             this.zoomBox = null; 
    145              
     128            this.zoomBoxEnd(evt);     
    146129        } else { 
    147130            if (this.performedDrag) { 
     
    177160    defaultWheelDown: function()  { 
    178161        this.map.zoomOut(); 
     162    }, 
     163 
     164    /** Zoombox function.  
     165     * 
     166     */ 
     167    zoomBoxEnd: function(evt) { 
     168        if (Math.abs(this.mouseDragStart.x - evt.xy.x) > 5 ||     
     169            Math.abs(this.mouseDragStart.y - evt.xy.y) > 5) {    
     170            var start = this.map.getLonLatFromViewPortPx( this.mouseDragStart );  
     171            var end = this.map.getLonLatFromViewPortPx( evt.xy ); 
     172            var top = Math.max(start.lat, end.lat); 
     173            var bottom = Math.min(start.lat, end.lat); 
     174            var left = Math.min(start.lon, end.lon); 
     175            var right = Math.max(start.lon, end.lon); 
     176            var bounds = new OpenLayers.Bounds(left, bottom, right, top); 
     177            var zoom = this.map.getZoomForExtent(bounds); 
     178            this.map.setCenter(new OpenLayers.LonLat( 
     179              (start.lon + end.lon) / 2, 
     180              (start.lat + end.lat) / 2 
     181             ), zoom); 
     182        } else { 
     183            var end = this.map.getLonLatFromViewPortPx( evt.xy ); 
     184            this.map.setCenter(new OpenLayers.LonLat( 
     185              (end.lon), 
     186              (end.lat) 
     187             ), this.map.getZoom() + 1); 
     188        }     
     189        this.map.viewPortDiv.removeChild(document.getElementById("zoomBox")); 
     190        this.zoomBox = null; 
    179191    }, 
    180192 
  • branches/openlayers/2.0/lib/OpenLayers/Control/MouseToolbar.js

    r1352 r1356  
    77 *  
    88 * @requires OpenLayers/Control.js 
     9 * @requires OpenLayers/Control/MouseDefaults.js 
    910 */ 
    1011OpenLayers.Control.MouseToolbar = Class.create(); 
     
    1213OpenLayers.Control.MouseToolbar.Y = 300; 
    1314OpenLayers.Control.MouseToolbar.prototype =  
    14   Object.extend( new OpenLayers.Control(), { 
     15  Object.extend( new OpenLayers.Control(),  
     16    Object.extend( new OpenLayers.Control.MouseDefaults(), { 
    1517     
    1618    mode: null, 
     
    243245        switch (this.mode) { 
    244246            case "zoombox": 
    245                 if (Math.abs(this.mouseDragStart.x - evt.xy.x) > 5 ||     
    246                     Math.abs(this.mouseDragStart.y - evt.xy.y) > 5) {   
    247                     var start = this.map.getLonLatFromViewPortPx( this.mouseDragStart );  
    248                     var end = this.map.getLonLatFromViewPortPx( evt.xy ); 
    249                     var top = Math.max(start.lat, end.lat); 
    250                     var bottom = Math.min(start.lat, end.lat); 
    251                     var left = Math.min(start.lon, end.lon); 
    252                     var right = Math.max(start.lon, end.lon); 
    253                     var bounds = new OpenLayers.Bounds(left, bottom, right, top); 
    254                     var zoom = this.map.getZoomForExtent(bounds); 
    255                     this.map.setCenter(new OpenLayers.LonLat( 
    256                       (start.lon + end.lon) / 2, 
    257                       (start.lat + end.lat) / 2 
    258                      ), zoom); 
    259                 }     
    260                 this.map.viewPortDiv.removeChild(document.getElementById("zoomBox")); 
    261                 this.zoomBox = null; 
     247                this.zoomBoxEnd(evt); 
    262248                if (this.startViaKeyboard) this.leaveMode(); 
    263249                break; 
     
    284270        } 
    285271    } 
    286 })
    287  
     272}))
     273