[as3]FlexSDKでGoogleMaps API for Flash

Posted on 6月 12, 2008
Filed Under flex, flash, GoogleMaps |

Google Maps API for Flashお試し中
例によってFlexSDK。
ver: map_flex_1_4.swc

いくつか異常に重い処理がある
呼び出し順によってなんでこんなに違うんだ!?なんかよくわからないけど直った。

Flex[23]SDKでやるとUIComponentの中に入れないから、Mapのサイズを手動設定しないといけない(?)んだけどそのタイミングによっては異常に時間がかかる(?)

以下のならok

Actionscript:
  1. map = new Map;
  2. map.key = Params.key;
  3. addChild( map );
  4. map.addEventListener(MapEvent.MAP_READY, function(e:MapEvent) :void {
  5.     map.removeEventListener( MapEvent.MAP_READY, arguments.callee );
  6.     map.setSize( new Point(stage.stageWidth,stage.stageHeight) );
  7.     map.setCenter(
  8.         new LatLng(Params.MAP_INITIAL_CENTER_LAT,Params.MAP_INITIAL_CENTER_LNG),
  9.         3,
  10.         MapType.HYBRID_MAP_TYPE);
  11.  
  12.     map.enableScrollWheelZoom();
  13.     map.enableContinuousZoom();
  14.     map.addControl( new PositionControl() );
  15.     map.addControl( new ZoomControl() );
  16.     map.addControl( new MapTypeControl() );
  17. });
  18. map.addEventListener(MapMoveEvent.MOVE_END, function(e:MapMoveEvent) :void {
  19.     //mapRefreshed();
  20. });
  21. map.addEventListener(MapMouseEvent.CLICK, function(e:MapMouseEvent):void{
  22.     logger("[CLICK]pos: "+e.latLng);
  23. });

keyはこんなふうに設定するのがいいのかなぁ
Paramsクラス

Actionscript:
  1. public static function get key() :String {
  2.     var loadedFrom :String = stage.loaderInfo.loaderURL.match(/^(https?:\/\/[^\/]+)/)[1];
  3.     if ( flashvars["key"] ) {
  4.         return flashvars["key"];
  5.     }
  6.     switch ( loadedFrom ) {
  7.     case "http://production.com":
  8.         return "key_for_production";
  9.     case "http://dev.production.com":
  10.         return "key_for_dev";
  11.     }
  12.     return "key_for_localhost";
  13. }

Comments

Leave a Reply