Changeset 2665 for lang/actionscript/swfgmap
- Timestamp:
- 12/06/07 21:51:12 (13 months ago)
- Location:
- lang/actionscript/swfgmap/trunk
- Files:
-
- 1 added
- 9 modified
-
TestApp.as (modified) (2 diffs)
-
TestApp.swf (added)
-
gyuque/gmap/GMapCalc.as (modified) (1 diff)
-
gyuque/gmap/GMapView.as (modified) (2 diffs)
-
gyuque/gmap/GMapViewport.as (modified) (1 diff)
-
gyuque/gmap/LayerManager.as (modified) (3 diffs)
-
gyuque/gmap/googlemaps/GMapMapLayer.as (modified) (4 diffs)
-
gyuque/gmap/googlemaps/GMapMapTile.as (modified) (2 diffs)
-
gyuque/gmap/ui/Spinner.as (modified) (4 diffs)
-
testapp.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/actionscript/swfgmap/trunk/TestApp.as
r2650 r2665 5 5 import gyuque.gmap.*; 6 6 import gyuque.gmap.ui.Spinner; 7 import mx.events.SliderEvent; 7 8 8 9 public class TestApp extends GMapView 9 10 { 11 private var mSpnr:Spinner; 10 12 public function TestApp() 11 13 { … … 20 22 21 23 var vp:GMapViewport = new GMapViewport(36.09992, 139.65497, 640, 480, 15); 22 23 24 var T:Matrix = new Matrix();25 T.rotate(0.9);26 vp.setTransform(T);27 24 setViewport(vp); 28 25 29 26 var spnr:Spinner = new Spinner(64); 30 27 addChild(spnr); 28 spnr.addEventListener(SliderEvent.THUMB_DRAG , onSpinner); 29 31 30 spnr.x = 8; 32 31 spnr.y = 8; 32 mSpnr = spnr; 33 } 34 35 protected function onSpinner(e:SliderEvent):void 36 { 37 mCurrentViewport.setNewRotation(mSpnr.value); 38 fireViewportChange(); 33 39 } 34 40 } -
lang/actionscript/swfgmap/trunk/gyuque/gmap/GMapCalc.as
r2452 r2665 52 52 return Math.pow(2, zoom+8); 53 53 } 54 55 public static function calcMapTileCols(zoom:int):int 56 { 57 return Math.pow(2, zoom); 58 } 54 59 55 60 public static function calcTileData(x:Number, y:Number, zoom:int, layer:int):Object -
lang/actionscript/swfgmap/trunk/gyuque/gmap/GMapView.as
r2650 r2665 17 17 private var mBaseSprite:Sprite; 18 18 private var mSuperLayer:LayerManager; 19 pr ivatevar mCurrentViewport:GMapViewport;19 protected var mCurrentViewport:GMapViewport; 20 20 21 21 public function GMapView(options:*) … … 39 39 fmtDebugOut = new TextFormat(); 40 40 fmtDebugOut.size = 9; 41 txDebugOut.height = height; 41 txDebugOut.y = 90; 42 txDebugOut.height = height-90; 42 43 txDebugOut.width = 600; 43 44 } -
lang/actionscript/swfgmap/trunk/gyuque/gmap/GMapViewport.as
r2637 r2665 65 65 mInvViewToScreen = M.clone(); 66 66 mInvViewToScreen.invert(); 67 } 68 69 public function setNewRotation(r:Number):void 70 { 71 var T:Matrix = new Matrix(); 72 T.rotate(r); 73 setTransform(T); 67 74 } 68 75 -
lang/actionscript/swfgmap/trunk/gyuque/gmap/LayerManager.as
r2528 r2665 7 7 8 8 private var mLayers:Array = new Array(); 9 private var mPanPos:Point = new Point();10 9 11 10 public function LayerManager(c:DisplayObjectContainer) … … 54 53 M.tx = v.width * 0.5; 55 54 M.ty = v.height * 0.5; 56 if (refreshAll)57 {58 mPanPos.x = 0;59 mPanPos.y = 0;60 }61 else62 {63 mPanPos.x += mLastDX;64 mPanPos.y += mLastDY;65 }66 M.tx -= mPanPos.x;67 M.ty -= mPanPos.y;68 55 69 56 transform.matrix = M; … … 72 59 public function getCurrentPanning(out:Point):void 73 60 { 74 mViewport.transformVectorScreenToView(mPanPos.x, mPanPos.y, out); 61 out.x = 0; 62 out.y = 0; 63 //mViewport.transformVectorScreenToView(mPanPos.x, mPanPos.y, out); 75 64 } 76 65 } -
lang/actionscript/swfgmap/trunk/gyuque/gmap/googlemaps/GMapMapLayer.as
r2637 r2665 28 28 29 29 var g:Graphics = graphics; 30 30 /* 31 31 g.beginFill(0xf5f0e9); 32 32 g.drawRect(-384, -128, 768, 256); … … 37 37 g.drawRect(-128, -128, 256, 256); 38 38 g.endFill(); 39 39 */ 40 40 _I=I++; 41 41 } … … 57 57 mViewport = v; 58 58 mVPobs.currentViewport = mViewport; 59 60 if (e.screenDX || e.screenDY) 61 { 62 var p:Point = new Point(); 63 mViewport.transformVectorScreenToView(e.screenDX, e.screenDY, p); 64 x -= p.x; 65 y -= p.y; 66 } 59 67 } 60 68 … … 90 98 public function loadTile(tx:int, ty:int):void 91 99 { 92 var tile:GMapMapTile = new GMapMapTile(tx, ty, GMapCalc.calcMapsZoomIndex(mViewport.zoom));100 var tile:GMapMapTile = new GMapMapTile(tx, ty, mViewport.zoom); 93 101 tile.addEventListener(IOErrorEvent.IO_ERROR, onIOError); 94 102 //mVPobs.dout.puts(tile.url); -
lang/actionscript/swfgmap/trunk/gyuque/gmap/googlemaps/GMapMapTile.as
r2528 r2665 4 4 import flash.events.*; 5 5 import flash.net.URLRequest; 6 import gyuque.gmap.GMapCalc; 6 7 7 8 public class GMapMapTile extends Loader 8 9 { 9 public var mTileURL:String ;10 public var mTileURL:String = null; 10 11 public function GMapMapTile(tx:int, ty:int, z:int) 11 12 { 13 var cols:int = GMapCalc.calcMapTileCols(z); 14 if (ty < 0 || ty >= cols) 15 return; 16 if (tx < 0) 17 tx += cols * 100; 18 12 19 var server_index:int = tx%4; 13 mTileURL = "http://mt"+server_index+".google.com/mt?n=404&v=ap.63&x="+tx+"&y="+ty+"&zoom="+z; 20 tx %= cols; 21 ty %= cols; 22 mTileURL = "http://mt"+server_index+".google.com/mt?n=404&v=ap.63&x="+tx+"&y="+ty+"&zoom="+GMapCalc.calcMapsZoomIndex(z); 14 23 } 15 24 … … 21 30 public function loadTile():Loader 22 31 { 32 if (!mTileURL) 33 return this; 34 23 35 var req:URLRequest = new URLRequest(mTileURL); 24 36 load(req); -
lang/actionscript/swfgmap/trunk/gyuque/gmap/ui/Spinner.as
r2650 r2665 2 2 { 3 3 import flash.display.*; 4 import flash.events.*; 4 5 import flash.geom.Matrix; 6 import mx.events.SliderEvent; 5 7 6 8 public class Spinner extends Sprite … … 8 10 private var mSize:int; 9 11 private var mBaseRing:Sprite; 12 private var mCursor:Sprite; 10 13 11 14 private var mRGradColors:Array; … … 13 16 private var mRGradRatios:Array; 14 17 private var mRGradMatrix:Matrix; 18 19 private var mValue:Number; 20 21 private var mDrag:DragData = new DragData(); 15 22 16 23 public function Spinner(sz:int) … … 20 27 mRGradRatios = [150, 180 , 200, 255]; 21 28 mRGradMatrix = new Matrix(); 22 mRGradMatrix.createGradientBox(sz*1.05, sz*1.05, 0, -sz*0.0 5, -sz*0.05);29 mRGradMatrix.createGradientBox(sz*1.05, sz*1.05, 0, -sz*0.06, -sz*0.06); 23 30 24 31 mSize = sz; 25 32 mBaseRing = new Sprite(); 26 drawBaseRing(mBaseRing.graphics); 33 mCursor = new Sprite(); 34 drawBaseRing(mBaseRing.graphics, mCursor.graphics, graphics); 35 mBaseRing.addChild(mCursor); 36 mCursor.x = sz/2; 37 mCursor.y = sz/2; 38 mCursor.mouseEnabled = false; 27 39 28 40 addChild(mBaseRing); 41 42 mBaseRing.addEventListener(MouseEvent.MOUSE_MOVE , onRingMouseMove); 43 mBaseRing.addEventListener(MouseEvent.MOUSE_DOWN , onRingMouseDown); 44 mBaseRing.addEventListener(MouseEvent.MOUSE_UP , onRingMouseUp); 45 mBaseRing.addEventListener(MouseEvent.MOUSE_OUT , onRingMouseOut); 46 47 mValue = 0; 29 48 } 30 49 31 private function drawBaseRing(g:Graphics):void 50 protected function onRingMouseMove(e:MouseEvent):void 51 { 52 e.stopPropagation(); 53 54 if (mDrag.dragging) { 55 mDrag.update(e.localX - mSize/2, e.localY - mSize/2); 56 57 mValue += mDrag.dRad; 58 var se:SliderEvent = new SliderEvent(SliderEvent.THUMB_DRAG, false, false, -1, mValue); 59 dispatchEvent(se); 60 updateCursor(mValue); 61 } 62 } 63 64 public function set value(v:Number):void 65 { 66 mValue = v; 67 updateCursor(mValue); 68 } 69 70 public function get value():Number 71 { 72 return mValue; 73 } 74 75 protected function updateCursor(r:Number):void 76 { 77 mCursor.rotation = r * 180 / Math.PI; 78 } 79 80 protected function onRingMouseDown(e:MouseEvent):void 81 { 82 e.stopPropagation(); 83 84 mDrag.dragging = true; 85 mDrag.update(e.localX - mSize/2, e.localY - mSize/2); 86 } 87 88 protected function onRingMouseUp(e:MouseEvent):void 89 { 90 e.stopPropagation(); 91 92 mDrag.dragging = false; 93 } 94 95 protected function onRingMouseOut(e:MouseEvent):void 96 { 97 e.stopPropagation(); 98 99 mDrag.dragging = false; 100 } 101 102 private function drawBaseRing(g:Graphics, c_g:Graphics, sh_g:Graphics):void 32 103 { 33 104 var c:int = mSize/2; 34 105 35 g.beginFill(0, 0.2);36 g.lineStyle(1, 0xcccccc, 0.1);37 g.drawCircle(c+1, c+2, mSize/2);38 g.drawCircle(c+1, c+2, mSize/3.3);39 g.endFill();106 sh_g.beginFill(0, 0.1); 107 sh_g.lineStyle(1, 0, 0.1); 108 sh_g.drawCircle(c+1, c+2, mSize/2); 109 sh_g.drawCircle(c+1, c+2, mSize/3.6); 110 sh_g.endFill(); 40 111 41 112 g.beginGradientFill(GradientType.RADIAL, mRGradColors, mRGradAlphas, mRGradRatios, mRGradMatrix); 42 g.lineStyle(1, 0x cccccc);113 g.lineStyle(1, 0x999999); 43 114 g.drawCircle(c, c, mSize/2); 44 g.drawCircle(c, c, mSize/3. 3);115 g.drawCircle(c, c, mSize/3.6); 45 116 g.endFill(); 117 118 for (var i:int = 0;i < 3;i++) 119 { 120 if (!i) { 121 c_g.beginFill(0, 0.2); 122 c_g.lineStyle(2, 0xcccccc, 0.4); 123 } else { 124 c_g.beginFill(0xffffff, 0.26); 125 c_g.lineStyle(); 126 } 127 128 c_g.moveTo(0 , -mSize*0.44 ); 129 c_g.lineTo( mSize*0.07,-mSize*0.44 + mSize*0.06); 130 c_g.lineTo(-mSize*0.07,-mSize*0.44 + mSize*0.06); 131 c_g.endFill(); 132 } 133 46 134 } 47 135 } 48 136 } 137 138 class DragData 139 { 140 public var dragging:Boolean = false; 141 public var prevAngle:Number; 142 public var dRad:Number; 143 public var prevRad:Number; 144 public function update(x:Number, y:Number):void { 145 var r:Number = Math.atan2(y, x); 146 dRad = r - prevRad; 147 prevRad = r; 148 } 149 } -
lang/actionscript/swfgmap/trunk/testapp.html
r2454 r2665 5 5 <head> 6 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 7 <title> TestApp</title>7 <title>回るGoogle Maps</title> 8 8 <script src="http://maps.google.com/maps?file=api&v=2"></script> 9 9 <script src="./helper-js/getTileVer.js"></script>
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)