JavaScriptで位置情報がズレるのを直した

JavaScriptで位置情報を取得するに、なぜか20mとか位置がずれる。それを直そうと調べたところ、getCurrentPosition から、watchPositionに変えたところ、誤差10mの精度に8割がた改善しました。JavaScriptで位置情報を取得したい人にぜひ。

getCurrentPosition は精度が出ない

いやほんとこれびっくりでした。自室で試したときは、誤差10mくらいにおさまってたのに、屋外にいくといきなり誤差20m超え連発という、わけのわからない状況になって・・・。

>>getCurrentPosition は精度が出ないので watchPosition を使う。 – freefielder.jp

こちらの記事に書いてあるとおり、たしかに私、最初はgetCurrentPositionを使ってました。そして、記事に書かれているように、watchPositionを使ったところ、JavaScriptでの位置情報の取得の精度がかくだんに上がりました。

>>kagua (Yoshihiko Yoshida)

GitHubにコードをあげておきます。よろしければぜひ。

watchPositionで位置情報を取得する

JavaScriptの位置情報

右が、JavaScriptのwatchPositionを使った位置情報取得です。ここまで精度が変わるものか!というくらいですよね。

  • watchPositionを5回取得して平均を採用
  • watchPositionは常時取得なので注意
  • 位置情報取得したらnavigator.geolocation.clearWatch()で停止

getCurrentPositionのトラブル

getCurrentPositionを使ってJavaScriptで位置情報を取得したとき、こんなトラブルが頻発していました。何回か取得すると、そもそもスクリプトが動作しなくなる、というものです。ボタンタップしても毎回同じ数値しか出ないのです。

解決方法としては、ブラウザを終了させ、GoogleマップなどGPSを使うアプリを別途立ち上げる、そうしてブラウザを再立ち上げしますと、ちゃんと動作しました。

上記の計測をするときも、毎回ブラウザのシークレットモードにして、都度GPSに位置情報の取得を許可する、というのを行い取得しました。

位置情報の誤差10mはこれくらい

JavaScriptで位置情報を取得の精度を上げる

写真にある、ちょっとした噴水や銅像のまわりの円は半径約2mほどです。ですので、直径8mくらいのスポット指定をして、まあその範囲に入ったら何か音がなる、というのはスポットへの到達感もあるかなーという距離かと。

JavaScriptで位置情報がずれるのを直して、誤差がまあ10mくらいに収まりました。上記の計測ですと、15回中2回は誤差10mを超えるくらい、割合でいうと83%くらいの精度。まあなんとか及第点かな、と。

ですので、これから地域ガイドに使えるような利用を想定した、機能実装を進めていこうと思います。

>>kagua (Yoshihiko Yoshida)

こちらでソースコードはオープンに公開していきますので、ぜひ地域の活性化やリアルイベント、大学のキャンパス案内などご利用下さい。

音声ガイドで 聴く名画 (サンクチュアリ出版) | 佐藤晃子, 大塚明夫

音声ガイドで 聴く名画 (サンクチュアリ出版)

Amazonで詳しく見る

Amazonで口コミ レビューを見る

楽天で詳しく見る

Yahoo!ショッピングで詳しく見る

・ ・ ・ ・ ・

>>安っ!アマゾンで半額以下になっている食品タイムセール
セール特設ページを見る

↓↓↓無料のニュースレターを配信中です

オープンスポットAR