私はここで少し苦労しています。位置情報の更新を取得するためにFused APIを使用しています。私の意図は、ユーザーが歩いているときにMapにパスを描くことです。ここでAndroid融合位置情報APIがonLocationChangedで不正確な位置を返す
private void startReceivingLocationUpdates() {
if (checkGPSPermission() && mGoogleApiClient.isConnected() && !isReceivingLocationUpdates) {
LocationRequest locationRequest = new LocationRequest();
locationRequest.setInterval(5000);
locationRequest.setFastestInterval(5000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,
locationRequest, this);
isReceivingLocationUpdates = true;
}
}
&は、私が今、問題の位置更新
@Override
public void onLocationChanged(Location location) {
if(getDistanceBetweenTwoLacation(mCoordinates.get(mCoordinates.size() - 1), location) > 3d) {
for(int i= 0; i < mCoordinates.size(); i++) {
Location locationTemp = mCoordinates.get(i);
Log.d(TAG, "i => " + i + " Lat => " + String.valueOf(locationTemp.getLatitude()) + " Lng => " + String.valueOf(locationTemp.getLongitude()));
}
if(mCoordinates.size() > 0)
Log.d(TAG, "lat difference is => " + getDistanceBetweenTwoLacation(mCoordinates.get(mCoordinates.size() - 1), location));
mCoordinates.add(location);
}
}
を受け取る方法に従って、
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.map_layout, container, false);
// some other initialization
//....
//
if (mGoogleApiClient == null) {
mGoogleApiClient = new GoogleApiClient.Builder(mContext)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
return view;
}
が、私はものを開始します。
私は次のようにすることを実現していますは、onLocationChanged
はlat-lngの場所を与えます同じ場所で装置が安定していても、過去の場所からの差/距離は何度も約5〜90メートルです。何か不足していますか?屋内ではかなり一般的であるとき
ところで、ここで私は
private double getDistanceBetweenTwoLacation(Location origin, Location destination) {
return origin.distanceTo(destination);
}
このすべてを屋内でテストしていますか?もしそうなら、それは多くの周りにジャンプするのは正常です。精度の値をチェックすれば、それは非常に高く、位置の不確実性が非常に高いことがわかります。 – alzee
マニフェストにはどのような権限がありますか? –
がuser3137702 @はい、私は室内でテストをしています...ここ –