GPSを利用しよう (2/3)
作成:2012-03-12 07:48
更新:2012-03-12 07:48
更新:2012-03-12 07:48
■GPS機能とGeolocation API
さて今回使ってみる「GPS」の機能ですが、これはHTML5によって実現されている機能です。ですから、PhoneGapとは無関係に使うことができます。Webページなどでも使える機能なのですから。
GPS関係の機能は、一般にGeolocation APIと呼ばれます。これは、「navigator.geolocation」というオブジェクトとして用意されています。このオブジェクトにあるメソッドを利用することで、感嘆にGPSの位置情報を取得できます。
GPSというのは、メソッドを呼び出したらその場でぱっと値が得られる、というようなものではありません。計測には一定の時間がかかります。そこでGeolocation APIでは、コールバック関数(後で呼び出される関数)を利用して動くようになっています。
メソッドを実行すると、そのままスクリプトの処理を継続し、それとは別にバックグラウンドでGPSの計測を開始します。そして計測が終了し、正しく値が得られたなら、第1引数の関数が呼び出される、というわけです。この第1引数で定義する関数は、引数を1つもっています。位置情報をまとめて保持するpositionオブジェクトで、ここから各種の値をとり出すことができます。
・緯度の値
・経度の値
・高度の値
・方向(向き)の値
・更新日時
注意して欲しいのは、「これらはすべての値が常に得られるわけではない」という点です。例えば、高度や方向の情報などは機器によって扱えない場合もあるでしょう。緯度経度についてはGPSである以上必須ですが、それ以外のものはそれほど期待しないほうがいいかも知れません。
さて、これらの機能をAndroidで利用する場合、GPSに関連するパーミッション設定を用意してやらなければいけないので注意が必要でしょう。具体的には、以下の2つのアクセス権を記述しておきます。
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" />これでGPSの機能から位置情報が得られるようになりました。慣れてしまえばなんてことはありませんね。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
※関連コンテンツ
「PhoneGapによるAndroid/iPhoneアプリ開発入門」に戻る