アプリケーションの移動距離の一部を作成する作業を行っていますが、現在地に問題があります。ロケーションリスナーでは、トーストで緯度と経度の座標を出力しています。座標が常に変化しているのがわかります。毎回完全に同じになることは決してないことがわかりましたが、最初に登録された場所をリスナーに保存してから確認すると、その場所と常に更新される場所との間の距離は飛び回り、25 メートルにも及ぶことがあります。ここに私のリスナーコードがあります:
public class MyLocationListener implements LocationListener {
public void onLocationChanged(Location location) {
if(flag ==0){
locationC = location;
flag = 1;
}
//Constantly updated location
locationD = location;
//walking distance is distance from first initialized location to current location
walking = locationC.distanceTo(locationD);
String s =String.valueOf(location.getLatitude());
String ss =String.valueOf(location.getLongitude());
Toast.makeText(getApplicationContext()," "+s+" "+ss+" " ,Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(),"Walking distance is "+walking ,Toast.LENGTH_SHORT).show();
}
public void onStatusChanged(String s, int i, Bundle b) {
}
public void onProviderDisabled(String s) {
}
public void onProviderEnabled(String s) {
}
}
onCreate メソッドで実行される残りのロケーション コードは次のとおりです。
// Creating the location manger and towers etc
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria crit = new Criteria();
towers = lm.getBestProvider(crit, false);
location = lm.getLastKnownLocation(towers);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,MINIMUM_TIME_BETWEEN_UPDATE, MINIMUM_DISTANCECHANGE_FOR_UPDATE, new MyLocationListener());
if (location != null) {
glat = location.getLatitude();
glon = location.getLongitude();
}
場所を取得するためのより正確な方法があるかどうかを確認するために使用している V2 マップを調査したところ、それgoogleMap.getLocation();
が壊れていることがわかり、実際にアプリケーションが失敗しました。リスナーを正しく設定したかどうか、または他の場所コードを設定したかどうかはわかりませんが、場所がそのように飛び回るべきではないと感じています。
適度に曇り空の下で GPS を使用して位置を取得していると言うと、デバイスは GPS によって位置が設定されていることを通知します。より良い場所を取得するためのより実用的な方法についてアドバイスできる人はいますか?