位置情報取得~Geolocation APIの利用

電脳備忘録

自分向けメモ

自分向けサービスをこっそり開発中です。このサービスのキモになる位置情報についてあれこれ調べて実装しています。実機で動作確認を行いながら仕様を確定するつもりです。

下記のエントリーにわりとわかりやすかったので参照させていただきました。 第3回 位置情報を取得してみよう(後編)

以下、自分向けに上記エントリーの内容を抜粋。参照される方は上記のエントリーを読まれるとよいと思います。
■現在の位置を取得する navigator.geolocation.getCurrentPosition( successCallback , errorCallback , option)
■位置を定期的に取得する navigator.geolocation.watchPosition( successCallback , errorCallback , option)
一覧表示するときにはgetCurrentPosition、ナビゲーションさせるときにはwatchPositionといった感じで使い分けるとよさそうですね
■オプションの第一引数
第一引数には,位置情報取得が成功したときのコールバック関数を指定します。コールバック関数は,以下のpositionオブジェクトを受け取ります。

position.coords 緯度経度などを保持するCordinatesオブジェクト。
position.timestamp 位置情報を取得した時刻。

【Cordinatesオブジェクト】
coords.latitude・・・緯度
coords.longitude・・・経度
coords.altitude・・・高度
coords.accuracy・・・正確性(値が小さいほど正確)
coords.altitudeAccuracy・・・高度の正確性
coords.heading・・・方位
coords.speed・・・速度

※デバイスが対応していない場合は取得することはできません
想定しているサービスの内容から緯度・経度・正確性のオブジェクトは設定する必要がありそうです。
■オプションの第二引数
第二引数には,位置情報取得が失敗したときのコールバック関数を指定します。コールバック関数は,以下のerrorオブジェクトを受け取ります。

error.code・・・エラーコード
1.位置情報の取得が許可されていない
2.位置情報の取得が利用できない
3.タイムアウト
error.message・・・エラーメッセージ
■オプションの第三引数
第三引数には,関数実行時のオプションを指定します。
option.enableHighAccuracy・・・より高い正確性を求める(ただし,取得時間が長くなる)
スマートフォンでこのオプションを指定するとGPSを利用する

option.timeout・・・処理のタイムアウト
option.maximumAge・・・キャッシュされている位置情報オブジェクトを許容するキャシュ時間
GPSでの位置情報の取得を想定していますがGPSが使えない状況も想定しておかなければならないので住所で検索できる仕組みも必要ですね。
GearsのGeolocation APIを利用するには,以下のようにGeolocation オブジェクトを生成します。
var geolocation = google.gears.factory.create('beta.geolocation');
とりあえずGPSでほぼ正確な情報を取得して表示できるようになりましたが、かいけつしなければいけない課題はまだまだ多くあります・・・。

広告

ブログの維持費に充てるでございます・・・。