Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Archived:Flash LiteでGoogle Mapsを使ってGPS位置を表示する

From Wiki
Jump to: navigation, search

Archived.pngArchived: This article is archived because it is not considered relevant for third-party developers creating commercial solutions today. If you think this article is still relevant, let us know by adding the template {{ReviewForRemovalFromArchive|user=~~~~|write your reason here}}.

We do not recommend Flash Lite development on current Nokia devices, and all Flash Lite articles on this wiki have been archived. Flash Lite has been removed from all Nokia Asha and recent Series 40 devices and has limited support on Symbian. Specific information for Nokia Belle is available in Flash Lite on Nokia Browser for Symbian. Specific information for OLD Series 40 and Symbian devices is available in the Flash Lite Developers Library.

Article Metadata
Code ExampleArticle
Translated:
By fnjwikimng
Last edited: hamishwillee (14 May 2013)


本ページでは、Flash Lite, KunerLite, Google Static Maps を使用して、端末の現在のGPS座標を表示する方法を示します。 Kuneri maps screenshot.jpg

Contents

前もって準備すべきもの

Google Maps APIキーの取得

Google Mapsサービスを使用するため、Google Maps APIキーを取得する必要があります。まだ取得していない場合、下記サイトに行き、サインアップしてAPIキーを取得できます。 http://code.google.com/apis/maps/signup.html

KuneriLiteのダウンロード・インストール

KuneriLiteはFlash Liteの機能を拡張するツールキットで、Flash Liteアプリケーションが、ファイル書き込み、GPSデータの読み込みといったSymbianのネイティブ機能にアクセスできるようにするものです。
本チュートリアルを進めるには、KuneriLiteをダウンロード・インストールする必要があります。 KuneriLiteダウンロードページ

Flash Liteアプリケーションを作成する

Flash Liteムービーを作成する

本例題ではFlash Lite 2.1を使用しますが、それを別バージョン(新旧問わず)に移植することはとても簡単です。空のFlash Liteムービーを作成した後は、以下に示す簡単なステップに従うだけです。

  • メニューから挿入 → 新規シンボル...と辿って「ボタン」を作成し、以下のプロパティを入力します。
    • 「名前」を GpsButton
    • チェックボックスのActionScriptに書き出し最初のフレームに書き出しにチェックを入れる

GpsButtonProperties.jpg

  • ボタンの作成が終了した後、そのボタンを、下記スクリーンショット中にあるようにルートムービー上のステージ底辺部に置き、そのインスタンス名を startButton とします。

ButtonOnStage.jpg

ActionScriptコードを入力する

ルートムービー上で、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 を押した時の動作として、

  • GPSを開始する
  • 現在のGPS座標を取得する
  • 取得したGPS座標を中心とした、地図を表示する

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()ハンドラは、以下のことを行います。

  • エラーが全く発生していない(klError = 0)、もしくはGPSが既に開始している場合(klError = -11)をキャッチします。GPSプラグインに関連したエラー一覧については、下記KuneriLite Wikiページをご確認ください。

http://wiki.kunerilite.net/index.php?title=GPS_plugin

  • GPSを開始する際にエラーが発生した場合、上記で定義したkuneriError()関数を呼出します。
  • GPSが正しく開始された場合、KuneriLiteの次の呼出しを行い、ここで現在のGPS座標を取得します(klCommand=read)。

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);
}

上記関数では、以下の処理をします。

  • 新しい空のムービークリップをムービールートに関連付けます。
  • 上記ムービークリップを座標(0,0)に配置します。
  • 空のクリップ中に240x280ピクセルのマップイメージをJPEG形式でロードするため、MovieClipLoaderを使用します。

それが終わったら、作成したFlashLiteムービーをテストできます。

作成したFlash Liteアプリケーションをテストする

PC上でテストする

実端末にデプロイせずにアプリケーションをテストするため、以下に示す簡単なステップに従う必要があります。

  • デフォルトの設定(port: 1001, key: Basic)で、KuneriLite Emulatorを起動する
  • Flash Liteムービーを起動する
  • Find Me!をクリックし、イメージがロードされるのを待ちます。(エミュレータを使用するので、GPS位置は実際のものではありません。)

KuneriLite Emulatorについての詳細は、以下のリンクをご参照ください。 KuneriLite Emulator

実端末でテストする

アプリケーションを実端末でテストするため、以下の手順に従い、KuneriLite Wizardを使用してSISアプリケーションをパッケージ化する必要があります。 Kunerimaps wizard shot.jpg

  • FlashLiteムービーをエクスポートする
  • "Create a new project"で新しくプロジェクトを作成する
  • プロジェクト名(Project name)その他データを入力し、プラグイン(Plug-ins)からGPSを選択する
  • Flash Lite2.xまたは3.xを使用していて、その1つでアプリケーションを起動する場合、"Use external player"オプションにチェックを入れる
  • 常に"Use stub"オプションにチェックを入れることを推奨
  • プロジェクトのMain SWFとして、エクスポートしたSWFファイルを選択する

KuneriLite Wizardについての詳細は、以下のリンクをご参照ください。KuneriLite Wizard Beginner's Guide

リソース類

This page was last modified on 14 May 2013, at 06:45.
317 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×