以前PlaceEngineをActionScriptからうまく使えないと書いたのですが,その後クウジット社の人とやりとりして,最終的に動くのを確認しました.問題は2点あったようです.1点はサーバ側の問題だったようで,修正したという連絡がありました.もう1つはcrossdomain.xmlの場所が異なっていたようです.以下のようにPlaceEngineAPI.asを直せば良いです.


       //サーバアクセスに先立って、crossdomain.xmlの場所を指定
-     Security.loadPolicyFile("http://www.placeengine.com/api/crossdomain.xml");
+    Security.loadPolicyFile("http://www.placeengine.com/crossdomain.xml");

この修正後,ActionScriptからも住所を取得できるのを確認できました.クウジット社の方々にはこの場を借りてお礼申し上げます.

新しい扉 PlaceEngine ActionScript API公開“という記事で,ActionScript用のAPIソースが公開されていたので,それをベースにPlaceEngineをActionScriptから使ってみました.とりあえず,PlaceEngineのローカルDBを用いて緯度経度を取得することはできるようです.

まず,PlaceEngineをサイトからダウンロードしてインストールします.起動後に,環境設定→ローカルDB→アップデートをします.WifiをOnにした状態で”現在地を取得”を押すと,登録されている位置が取得できるはずです.取得できない場合はPlaceEngine.com Mapから追加してください.

ActionScriptからローカルDBを使うには以下のようにします.

  1. PlaceEngine連携サイト用アプリケーションキー取得ページで以下の情報を入力してアプリケーションキーを生成
    • 認証コード: 表示されているcaptureを入力
    • URL: app:/アプリケーション名.swf (helloというアプリならapp:/hello.swf)
    • サービス名: アプリケーション名
  2. PlaceEngineAPI.asをプロジェクトの適切な場所に置く.デフォルトパッケージ名はPlaceEngineAPIになっているので適宜変える.
  3. PlaceEngineAPIに以下を追加
    		public function getLocationFromLocal():void{
    			printMsg("WiFi情報取得中...");
    			//タイムスタンプとして現在時刻を取得
    			timeStamp = new Date();
    	
    			//URL文字列を作成
    			var URL:String = "http://localhost:5448/locdb?t=";
    				URL += timeStamp.milliseconds + "&appk=";
    				URL += appk;
    			trace("URL: " + URL);
    			var request:URLRequest = new URLRequest(URL);
    			var loader:URLLoader = new URLLoader();
    			
    			//イベントハンドラをセット
    			setListeners(loader, "Server");
    			
    			//実際にリクエストを発行
    			sendRequest(loader, request);
    		}
    
  4. プログラム側からはgetLocationの代わりにgetLocationFromLocalを使う

以上の手順で動くことは確認しました.苦労したのは,正しいアプリケーションキーの取得方法がなかなかわからなかったことです.

getLocation がうまく動かないためWebAPIから直接取得できないのですが,原因はcrossdomain.xmlにあるようです.どうやらcrossdomain.xmlの内容が古いらしく,以下のエラーを吐きます.サーバ側で対応してもらえるように,後で連絡する予定です.

Warning: Domain www.placeengine.com does not specify a meta-policy. Applying default meta-policy ‘master-only’. This configuration is deprecated. See http://www.adobe.com/go/strict_policy_files to fix this problem.

Error: Ignoring policy file at http://www.placeengine.com/api/crossdomain.xml due to meta-policy ‘master-only’.

Mercurial設定最近Flex Builderを使っているのですが,最初から対応しているバージョン管理システムがCVSしかないなくて困っていました.Flex BuilderはEclipseがベースなのでEclipse用のプラグインが動くはずだと思い,いじっていたら動いたようなので書いておきます.

まずMercurial Eclipseのサイトを見るとSoftware updateを使えと書かれていますが,Flex BuilderはSoftware updateのメニューが消してありますので使えません.そこで直接jarファイルをPluginsのページからダウンロードします.ダウンロードしたjarをFlex Builderのpluginsディレクトリ(Macなら”アプリケーション”→”Adobe Flex Builder 3″→plugins)に置いた後,Flex Builderを起動します.

ショートカット - 新規
起動後にMercurialの設定について聞かれますので,hgやgpgの場所などの設定をします.私の場合はfinkでMercurialを入れてあるので,それぞれ/sw/bin/hg,/sw/bin/gpgとしました.後は”パースペクティブの設定”→”新規”,”ビューの表示”でMecurialにチェックを入れれば設定完了です.

Mercurialで管理するためには,管理下に置きたいプロジェクトを右クリック→”チーム”→”プロジェクトの共用”→”Mercurial”で設定した後に,”チーム”→”Commit”で管理したいファイルをコミットすれば良いです.