原文(英語): Displaying GPS position using Google Maps images in FlashLite
本ページでは、Flash Lite, KunerLite, Google Static Maps を使用して、端末の現在のGPS座標を表示する方法を示します。
Contents |
Google Mapsサービスを使用するため、Google Maps APIキーを取得する必要があります。まだ取得していない場合、下記サイトに行き、サインアップしてAPIキーを取得できます。 http://code.google.com/apis/maps/signup.html
KuneriLiteはFlash Liteの機能を拡張するツールキットで、Flash Liteアプリケーションが、ファイル書き込み、GPSデータの読み込みといったSymbianのネイティブ機能にアクセスできるようにするものです。
本チュートリアルを進めるには、KuneriLiteをダウンロード・インストールする必要があります。
KuneriLiteダウンロードページ
本例題ではFlash Lite 2.1を使用しますが、それを別バージョン(新旧問わず)に移植することはとても簡単です。空のFlash Liteムービーを作成した後は、以下に示す簡単なステップに従うだけです。
ルートムービー上で、Actionsというラベルのレイヤーを新たに作り、そのActionScriptエディタを開きます。 そして、プロパティを数ヶ所定義します。
// Enter your api key here var apiKey = 'API_KEY'; //If you're using non-commercial version of KuneriLite, you'll not need to change this var kuneriPath = 'http://127.0.0.1:1001/Basic/';
ここで、コード中で使う、いくつかの有用な関数を定義します。
//We'll call this function when some KuneriLite related errors occur function kuneriError(error:String) { trace("KuneriLite error: " + error); } //This function will do all calls to KuneriLite servers //and call the given handler passing response values as argument function kuneriLoad(url, handler) { var loader:LoadVars = new LoadVars(); loader.onLoad = function() { handler(this); } trace("LOADING: " + url); loader.load(url); }
ここで、ボタンに関連したロジックとして、コードを入力します。ユーザーが startButton を押した時の動作として、
KuneriLite GPS pluginについての情報は、以下に示す関連Wikiページで確認できます。 http://wiki.kunerilite.net/index.php?title=GPS_plugin
gpsButtonを押した時に、GPSを開始し、start klCommandを使用します。
startButton.onPress = function() { kuneriLoad(kuneriPath + 'GPS?klCommand=start', gpsStarted); } function gpsStarted(res:LoadVars) { if(res.klError == 0 || res.klError == -11) { trace("GPS started"); kuneriLoad(kuneriPath + 'GPS?klCommand=read', gpsDataRead); } else { kuneriError("Error starting GPS!"); } }
gpsStarted()ハンドラは、以下のことを行います。
http://wiki.kunerilite.net/index.php?title=GPS_plugin
KuneriLiteへのこの呼出しでは、gpsDataRead()ハンドラを呼出します。それを下記に示します。
function gpsDataRead(res:LoadVars) { if(res.klError == 0) { var lat = res.klPosLatitude; var lng = res.klPosLongitude; trace("POSITION: " + lat + ", " + lng); loadMap(lat, lng); } else { kuneriError("Error starting GPS!"); } }
上記のように、本ハンドラは、KuneriLiteによって何らかのエラーが発生するかどうかをチェックし、エラーがなければ緯度(latitude)と経度(longitude)をそれぞれklPosLatitude,klPosLongitudeプロパティとして取得します。 それが終わったら、loadMap()関数を呼出し、実際にStatic Map画像をロードします。
function loadMap(lat:Number, lng:Number) { var mapClip:MovieClip = _root.createEmptyMovieClip('mapClip', _root.getNextHighestDepth()); mapClip._x = 0; mapClip._y = 0; var mapWidth = 240; var mapHeight = 280; var loader:MovieClipLoader = new MovieClipLoader(); var mapUrl:String = 'http://maps.google.com/staticmap?center=' + lat + ',' + lng + '&format=jpg&zoom=8&size=' + mapWidth + 'x' + mapHeight + '&key=' + apiKey; loader.loadClip(mapUrl, mapClip); }
上記関数では、以下の処理をします。
それが終わったら、作成したFlashLiteムービーをテストできます。
実端末にデプロイせずにアプリケーションをテストするため、以下に示す簡単なステップに従う必要があります。
KuneriLite Emulatorについての詳細は、以下のリンクをご参照ください。 KuneriLite Emulator
アプリケーションを実端末でテストするため、以下の手順に従い、KuneriLite Wizardを使用してSISアプリケーションをパッケージ化する必要があります。
KuneriLite Wizardについての詳細は、以下のリンクをご参照ください。KuneriLite Wizard Beginner's Guide