UnityのLocationServicceを使用して以下のコード(不要な部分は省略)を使用してGPSの値をとっているのですが誤差がひどいです。
端末はAndroidで高精度モードです。
private double dlatitude,dlongitude,daltitude;
public double slatitude, slongitude, saltitude;
IEnumerator Start(){
slatitude = Input.location.lastData.latitude; slongitude = Input.location.lastData.longitude; saltitude = Input.location.lastData.altitude; slatitude = double.Parse(slatitude.ToString ("N6")); slongitude = double.Parse(slongitude.ToString ("N6"));
}
void Update(){
dlatitude = Input.location.lastData.latitude;
dlongitude = Input.location.lastData.longitude;
daltitude = Input.location.lastData.altitude;
dlatitude = double.Parse(dlatitude.ToString ("N6"));
dlongitude = double.Parse(dlongitude.ToString ("N6"));
text.text = "開始地点:" + 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を所得しています。