質問: "開始地点:" + slatitude + "," + slongitude "現在地:" + dlatitude + "," + dlongitude; } Start()でアプリの開始位置の位置情報をとりslatitude,slongitudeへ格納しています。Updateでは現在の位置情報をとりdlatitude,dlongitudeへ格納しています。 アプリを起動して静止しtextのslatitudeとdlatitude,slongitudeとdlonngitudeが一致するのを待ちます。 しかし、1mくらい動くとdlatitude,dlongitudeがslatitude,slongitudeから大きくずれてしまいます。数十メートルから数百メートルずれてしまいます。ずれは緯度経度の桁から判断しています。 端末の移動量を計算することが必須のアプリなので誤差がここまでひどいと役に立ちません。 Start()でとった位置情報がアプリ起動の場所から大きくずれていることは確認しました。アプリ起動時に得られる位置情報は誤差が大きいのでしょうか? どうしても開始位置の位置情報を所得必要があります。 できるだけ正確に開始位置をとりたいのですが、Start関数だと正確に得ることは難しいのでしょうか? Start()でslatitude,slongitude Update()でdlatitude,dlongitudeを所得しています。
回答: あくまで経験則なので正しい確証はありません。 私も業務でunityでGPSを使うことになったのですが、正確な値は得られませんでした。 スマホの「高詳細」モードは、内蔵GPS、モバイル回線、ネットワークIPなど複数の値から算出します。 無線LANに繋いでいれば動いても位置情報は更新されません。モバイル回線も中継局基準となるので正確さには欠けます。 それで内蔵GPSなのですが、sim無しのタブレットで使用した結果、一度GPS衛星を見失うと再受信までに数分かかることもありました。GPSは常に受信できるわけではないので高詳細モードでは複合的に値を得ているのではないかと思います。 そして、アプリ起動時、GPSの値はおそらく、前回の分が残っています。 スマホを再起動したら緯度経度の値はリセットされました。 ネットの情報を調べても同じような情報しかなく、そういう理由で私はGPSをうまく使えませんでした。