アシアルブログスマートフォン用の表示で見るアシアルブログアシアルの中の人が技術と想いのたけをつづるブログです2012-06-26GPSアプリ作成上の注意点についてMonacaTweetこんにちは、サンプルアプリ開発者の山田健一です。GPSアプリはMonacaと相性がよいものの1つです。ケーブル要らずのデバッグができるからです。「GPSアプリをデバッガーで起動して、外を歩きながら取得したGPSデータを、PCに表示させたログで確認する」という使い方が可能です。GPS機能を利用するにはいくつかの注意点があります。場所によっては位置を測定できないことがある位置が測定できたとしても誤差が大きいことがある以上の点に注意してください。メソッドを使用するようにしてください。具体的なコード例は次のようになります。関数に制御が移ります。関数に制御が渡ります。第3パラメーターについて説明します。キャッシュされた位置情報の永続時間をミリ秒単位で指定します。例では3,000ミリ秒(=3秒)としています。位置情報を返すまでの最大待機時間をミリ秒単位で指定します。例では30,000ミリ秒(=30秒)としています。関数に制御が渡ります。指定することで厳密な計測になります。端末がGPS機能をサポートしている場合、GPS機能を使用します。成功時のコールバック関数はパラメーターを1つ持っています。このパラメーターに位置情報が入っています。次のように求められます。緯度:p.coords.latitude経度:p.coords.longitude誤差:p.coords.accuracy緯度、経度の単位は度です。これは通常私たちが用いている単位です。メソッドが呼ばれるまで位置情報の監視を続けます。位置情報監視を停めるには次のコードが必要です。いう変数で位置情報監視のイベントを識別しています。この位置情報は、じっとしていても測定誤差が変われば、callback関数が呼ばれます。測定誤差が変わる場合は多くの場合、位置情報も変化しています。実際にどれほどの誤差が発生するのかを予め把握しておくことは、GPSアプリの設計方針立案の重要事項となります。どの程度の誤差まで許容するのかtimeoutはどの程度の設定が適切かなどを決定する必要があります。筆者が作成したGPSを利用した歩行管理アプリhttps://play.google.com/store/apps/details?id=info.yamada_ken1.letswalkでは、timeoutは30,000ミリ秒(=30秒)としています。許容誤差を25mとしています。この許容誤差はアプリ内部で、測定結果をふるい落とす基準として使っています。Sで測定した誤差が、24mまでの測定データでおよその歩行記録が把握できると判断したためです。他の端末のことを考えて、25mとしました。歩行スピードを時速6kmで計算すると100m進むのに1分ですので、25mの誤差は15秒分に相当します。この測定誤差を容易に体験できるように、誤差が変化する様子をグラフに表すアプリを作成してみました。コードの主要部分は次のようになります。メソッドは位置情報が変わるたびに結果を返してきますので、ある程度測定したら停止する必要があります。45000);[/code]というコードで45秒後にイベントを発火させるようにしています。タイマーイベントでは[code]navigator.geolocation.clearWatch(watchId);[/code]というコードで、位置情報監視を停めています。位置情報取得エラーが発生した場合、以後の測定はあてになりませんので、同様に位置情報監視を停めています。このサンプルをデモした結果は次のようになります。このときPCのデバッグログには次のように表示されています。このように示された緯度、経度の場所を地図で示してくれるサイトを紹介します。http://earthjp.net/maps/デバッグログに示された緯度、経度を地図上で確認し、自分が測定した位置とどの程度異なっているかを確認してください。ライブラリーとして、iUI,jQuery,flotを使用していますが、上記のソースには含んでいませんので、別途ダウンロードをお願いします。ソースコード、apkファイルは次のリンクからダウンロードできます。byスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。