Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 03:32, 2 May 2008.

S60 3rd Edition でのGPS API

From Forum Nokia Wiki

英語版: GPS API in S60 3rd Edition


概要

S60 3rd Editionは、GPS測位を完全にサポートしています。内蔵と拡張Bluetooth GPSモジュールの両方をサポートしています。市場には、既にGPSが利用可能な電話機がいくつかあります。Nokia 6110 とNokia N95 です。今後もGPS内蔵の電話機が発売されます。

Nokiaから出されたSmart2Go(別名をNokia マップ)という、無料のGPSナビゲーション・ソフトがあります。GPS測位を利用した、サード・パーティのタイトルもいくつかあります。アプリケーションでGPS測位を使うにはどうしたらよいでしょうか?

実装

2つの方法があります。最初の方法は、外部Bluetooth GPSモジュールとロー・レベルのコミュニケーションを行う方法です。これは、S60 2nd Edition で広く使用されました。これには、多くの技術的問題や、いくつかの外部Bluetooth GPS機器で正しく動作しないことがあります。また、Nokia 6110 やNokia N95 電話機の内蔵GPSモジュールとは動作しません。これは、推奨されないやり方です。

推奨される方法は、S60 2nd Edition, Feature Pack 2 で導入されたLocation API を使う方法です。これは、S60 3rd Edition でもサポートされています。

Location API には、いくつかのキーとなるクラスがあります。RPositionServerとRPositioner、TPositionInfo です。最初に、RPositionServerに接続します。次に、RPositionerのオブジェクトを作成し、現在位置を取得するための非同期リクエストを発行します。結果は、TPositionInfo構造体で返されます。

使用方法

ここに、CGpsPositionRequest というハイ・レベルなユーティリティ・クラスがあります。これは、次の3つの問題を解決します。1つ目は、ユーザー(プログラマ)からLocation API の詳細と複雑さを全て隠します。2つ目に、これは同期で動作し、ユーザーから非同期の複雑さを全て除きます。3つ目に、位置リクエスト中にプログレス・ダイアログ(ウエイト・ノート)が表示され、エンド・ユーザーは、アプリケーションは動作していることがわかります。次は、使用例です:

#include "GpsPositionRequest.h"
    ...
    // variables to hold current locations
    TReal latitude, longitude;
    // create CGpsPositionRequest object and put it into cleanup stack; 
    // pass application name as argument
    CGpsPositionRequest* request = CGpsPositionRequest::NewLC(
        _L("My application"));
    // get current location (this operation can be long up to 30 seconds);
    // progress dialog is shown to user during this time
    TBool result = request->FetchCurrentPostionL(latitude, longitude);
    // delete request object
    CleanupStack::PopAndDestroy(request);
    // process result here
    if (result)
        {
        // success, use latitude and longitude coordinates
        }
    else
        {
        // failed getting current position, show error message to user
        }

MMPプロジェクト・ファイルに次の行を追加する必要があることに注意:

SOURCE          GpsPositionRequest.cpp
LIBRARY         lbs.lib

また、リソース・ファイルで、GpsPositionRequest.raをインクルードするようにする必要もあります:

#include "GpsPositionRequest.ra"

CGpsPositionRequest のソース・コードのダウンロードは、ここからです: Image:GpsPositionRequest.zip

位置を選ぶ前に見るために使う(簡単な再利用できる)コンテナを含んでいる他のサンプルが、ここにあります:Image:GeoTagging Example.zip

 
Powered by MediaWiki