JavaScriptで位置情報を取得するに、なぜか20mとか位置がずれる。それを直そうと調べたところ、getCurrentPosition から、watchPositionに変えたところ、誤差10mの精度に8割がた改善しました。JavaScriptで位置情報を取得したい人にぜひ。
getCurrentPosition は精度が出ない
いやほんとこれびっくりでした。自室で試したときは、誤差10mくらいにおさまってたのに、屋外にいくといきなり誤差20m超え連発という、わけのわからない状況になって・・・。
>>getCurrentPosition は精度が出ないので watchPosition を使う。 – freefielder.jp
こちらの記事に書いてあるとおり、たしかに私、最初はgetCurrentPositionを使ってました。そして、記事に書かれているように、watchPositionを使ったところ、JavaScriptでの位置情報の取得の精度がかくだんに上がりました。
GitHubにコードをあげておきます。よろしければぜひ。
watchPositionで位置情報を取得する
右が、JavaScriptのwatchPositionを使った位置情報取得です。ここまで精度が変わるものか!というくらいですよね。
- watchPositionを5回取得して平均を採用
- watchPositionは常時取得なので注意
- 位置情報取得したらnavigator.geolocation.clearWatch()で停止
getCurrentPositionのトラブル
getCurrentPositionを使ってJavaScriptで位置情報を取得したとき、こんなトラブルが頻発していました。何回か取得すると、そもそもスクリプトが動作しなくなる、というものです。ボタンタップしても毎回同じ数値しか出ないのです。
解決方法としては、ブラウザを終了させ、GoogleマップなどGPSを使うアプリを別途立ち上げる、そうしてブラウザを再立ち上げしますと、ちゃんと動作しました。
上記の計測をするときも、毎回ブラウザのシークレットモードにして、都度GPSに位置情報の取得を許可する、というのを行い取得しました。
位置情報の誤差10mはこれくらい
写真にある、ちょっとした噴水や銅像のまわりの円は半径約2mほどです。ですので、直径8mくらいのスポット指定をして、まあその範囲に入ったら何か音がなる、というのはスポットへの到達感もあるかなーという距離かと。
JavaScriptで位置情報がずれるのを直して、誤差がまあ10mくらいに収まりました。上記の計測ですと、15回中2回は誤差10mを超えるくらい、割合でいうと83%くらいの精度。まあなんとか及第点かな、と。
ですので、これから地域ガイドに使えるような利用を想定した、機能実装を進めていこうと思います。
こちらでソースコードはオープンに公開していきますので、ぜひ地域の活性化やリアルイベント、大学のキャンパス案内などご利用下さい。
音声ガイドで 聴く名画 (サンクチュアリ出版) | 佐藤晃子, 大塚明夫
・ ・ ・ ・ ・
>>安っ!アマゾンで半額以下になっている食品タイムセール
セール特設ページを見る
↓↓↓無料のニュースレターを配信中です