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. Thanks for all your past and future contributions.

Archived:S60 3rd Edition でのGPS API

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}}.

The article is believed to be still valid for the original topic scope.

Article Metadata
Code ExampleCompatibilityArticle
By masatoshi
Last edited: hamishwillee (10 Sep 2012)


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
// process result here
if (result)
// success, use latitude and longitude coordinates
// failed getting current position, show error message to user


SOURCE GpsPositionRequest.cpp
LIBRARY lbs.lib


#include "GpsPositionRequest.ra"

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


This page was last modified on 10 September 2012, at 03:57.
63 page views in the last 30 days.