Show
Ignore:
Timestamp:
12/06/07 17:24:47 (13 months ago)
Author:
gyuque
Message:

lang/actionscript/swfgmap: implemented zooming with fixed point

Location:
lang/actionscript/swfgmap/trunk/gyuque/gmap
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • lang/actionscript/swfgmap/trunk/gyuque/gmap/GMapView.as

    r2528 r2637  
    22{ 
    33        import flash.display.*; 
     4        import flash.geom.Point; 
    45        import flash.text.TextField; 
    56        import flash.text.TextFormat; 
     
    103104                protected function onMouseWheel(e:MouseEvent):void 
    104105                { 
    105                         zoom((e.delta > 0) ? 1 : -1); 
    106                 } 
    107                  
    108                 protected function zoom(d:int):void 
     106                        zoom((e.delta > 0) ? 1 : -1, e.stageX, e.stageY); 
     107                } 
     108                 
     109                protected function zoom(d:int, px:Number = -1, py:Number = -1):void 
    109110                { 
    110111                        var z:int = mCurrentViewport.zoom; 
     
    115116                         
    116117                        mCurrentViewport.zoom = z; 
     118                        if (px >= 0 || py >= 0) { 
     119                                var mv:Point = calcFixedPointZoom(px, py, (d>0) ? 2 : 0.5, mCurrentViewport); 
     120                                mCurrentViewport.moveByPixel(mv.x, mv.y); 
     121                                //fireViewportChange(mv.x, mv.y, z - oldz); 
     122                                //return; 
     123                        } 
     124                         
    117125                        fireViewportChange(0,0,z - oldz); 
     126                } 
     127                 
     128                protected function calcFixedPointZoom(sx:Number, sy:Number, zoomRatio:Number, vpAfter:GMapViewport):Point 
     129                { 
     130                        sx -= vpAfter.width *0.5; 
     131                        sy -= vpAfter.height*0.5; 
     132                         
     133                        var sx2:Number = sx * zoomRatio; 
     134                        var sy2:Number = sy * zoomRatio; 
     135                         
     136                        var dx:Number = sx2 - sx; 
     137                        var dy:Number = sy2 - sy; 
     138                 
     139//                      var retval:Point = new Point(); 
     140//                      vpAfter.transformVectorScreenToView(dx, dy, retval); 
     141//                      return retval; 
     142                        return new Point(dx, dy); 
    118143                } 
    119144 
  • lang/actionscript/swfgmap/trunk/gyuque/gmap/GMapViewport.as

    r2528 r2637  
    88                private var mLatlng:LatLng  = new LatLng(); 
    99                private var mNrmXY:Point    = new Point(); 
    10                 //private var mScreenXY:Point = new Point(); 
    1110                private var mBitmapXY:Point = new Point(); 
    1211                private var mViewSize:Point = new Point(); 
     
    3635                         
    3736                        calcXY(); 
    38                         //mScreenXY.x = 0; 
    39                         //mScreenXY.y = 0; 
    4037                } 
    4138                 
     
    7673 
    7774                        calcXY(); 
    78 //                      mScreenXY.x = 0; 
    79 //                      mScreenXY.y = 0; 
    8075                } 
    8176                 
     
    127122                        return mLatlng.lng; 
    128123                } 
    129                 /* 
    130                 public function get screenX():Number 
    131                 { 
    132                         return mScreenXY.x; 
    133                 } 
    134                  
    135                 public function get screenY():Number 
    136                 { 
    137                         return mScreenXY.y; 
    138                 } 
    139                 */ 
     124 
    140125                public function get to_screen_transform():Matrix 
    141126                { 
  • lang/actionscript/swfgmap/trunk/gyuque/gmap/googlemaps/GMapMapLayer.as

    r2528 r2637  
    9292                        var tile:GMapMapTile = new GMapMapTile(tx, ty, GMapCalc.calcMapsZoomIndex(mViewport.zoom)); 
    9393                        tile.addEventListener(IOErrorEvent.IO_ERROR, onIOError); 
    94 mVPobs.dout.puts(tile.url); 
     94//mVPobs.dout.puts(tile.url); 
    9595 
    9696                        addChild(tile.loadTile());