さて今回使ってみる「
GPS」の機能ですが、これは
HTML5によって実現されている機能です。ですから、
PhoneGapとは無関係に使うことができます。Webページなどでも使える機能なのですから。
GPS関係の機能は、一般に
Geolocation APIと呼ばれます。これは、「
navigator.geolocation」というオブジェクトとして用意されています。このオブジェクトにあるメソッドを利用することで、感嘆にGPSの位置情報を取得できます。
navigator.geolocation.getCurrentPosition(成功時処理,例外時処理);
これが、GPSの位置情報を取得するためのメソッドです。「
getCurrentPosition」は、2つの引数を持っています。いずれも関数で、1つ目がGPS取得に成功した場合、2つ目が失敗した場合にそれぞれ呼び出されます。
GPSというのは、メソッドを呼び出したらその場でぱっと値が得られる、というようなものではありません。計測には一定の時間がかかります。そこで
Geolocation APIでは、
コールバック関数(後で呼び出される関数)を利用して動くようになっています。
メソッドを実行すると、そのままスクリプトの処理を継続し、それとは別にバックグラウンドでGPSの計測を開始します。そして計測が終了し、正しく値が得られたなら、第1引数の関数が呼び出される、というわけです。この第1引数で定義する関数は、引数を1つもっています。位置情報をまとめて保持する
positionオブジェクトで、ここから各種の値をとり出すことができます。
・緯度の値position.cooding.latitude
・経度の値position.coords.longitude
・高度の値position.coords.altitude
・方向(向き)の値position.coords.heading
・更新日時position.timestamp
注意して欲しいのは、「これらはすべての値が常に得られるわけではない」という点です。例えば、高度や方向の情報などは機器によって扱えない場合もあるでしょう。緯度経度についてはGPSである以上必須ですが、それ以外のものはそれほど期待しないほうがいいかも知れません。
■AndroidのManiest.mfについて
さて、これらの機能をAndroidで利用する場合、GPSに関連するパーミッション設定を用意してやらなければいけないので注意が必要でしょう。具体的には、以下の2つのアクセス権を記述しておきます。
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
これでGPSの機能から位置情報が得られるようになりました。慣れてしまえばなんてことはありませんね。