Google Static Maps使って、地図画像をFlashに読み込めるか実験したら、YESともNOともつかない微妙な結果に・・・。
まぁ、今回はネタの紹介って事で。
ソースの方も、ハッキリ言って簡単すぎて態々載せたくない。
画像ロードはコンストラクタ内だけで実現できてて、他の関数は全部ドラッグアンドドロップ関連。
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;
import flash.events.SecurityErrorEvent;
import flash.geom.Point;
import flash.net.URLRequest;
import flash.system.LoaderContext;
public class GoogleMapDemo extends Sprite{
private var imgLoader:Loader = new Loader();
private var dragStart:Point;
public function GoogleMapDemo() {
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE , completeHandler);
imgLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR , loadErrorHandler);
imgLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR , loadErrorHandler);
imgLoader.load(new URLRequest("http://maps.google.com/staticmap?center=35.69045,139.695754&zoom=16&size=512x512&maptype=roadmap&key=<あなたのAPIキー>"));
imgLoader.x = imgLoader.y = -128;
this.addChild(imgLoader);
}
private function loadErrorHandler(e:Event):void {
}
private function completeHandler(e:Event):void {
this.addEventListener(MouseEvent.MOUSE_DOWN , mouseDonwHandler);
this.addEventListener(MouseEvent.MOUSE_UP , mouseUpHandler);
this.addEventListener(MouseEvent.MOUSE_OUT , mouseUpHandler);
}
private function mouseDonwHandler(evt:MouseEvent):void {
this.dragStart = new Point(evt.stageX , evt.stageY);
try {
this.removeEventListener(MouseEvent.MOUSE_MOVE , dragMap);
} catch (e:Error) { trace(e); }
this.addEventListener(MouseEvent.MOUSE_MOVE , dragMap);
}
private function mouseUpHandler(evt:MouseEvent):void {
try {
this.removeEventListener(MouseEvent.MOUSE_MOVE , dragMap);
} catch (e:Error) { trace(e); }
}
private function dragMap(e:MouseEvent):void {
this.imgLoader.x += e.stageX - this.dragStart.x;
this.imgLoader.y += e.stageY - this.dragStart.y;
if (this.imgLoader.x> 0) {
this.imgLoader.x =0;
}
if (this.imgLoader.y> 0) {
this.imgLoader.y = 0;
}
if (this.imgLoader.x <= -256) {
this.imgLoader.x = -256;
}
if (this.imgLoader.y <= -256) {
this.imgLoader.y = -256;
}
this.dragStart.x = e.stageX;
this.dragStart.y = e.stageY;
}
}
}
- ページ:
- 1
- 2




