使用 android.location.Location.distanceTo(startLocation) 来获取有时增加有时减少的距离?
use android.location.Location.distanceTo(startLocation) to get the distance that sometimes increase and sometimes reduce?
在我的 android 运行 应用程序中,我使用 android.location.Location.distanceTo(startLocation) 获取我开始 运行ning 的 startLocation 和我停止的 endLocation 之间的距离 运行宁。但是当i 运行时,距离有时会增加,有时会减少。有人帮我解决问题吗?
我的代码是这样的:
LocationManager locationManager = (LocationManager) getSystemService(
Context.LOCATION_SERVICE);
String provider = LocationManager.GPS_PROVIDER;
Location startLocation = locationManager
.getLastKnownLocation(provider);
LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
double distance = location.distanceTo(startLocation)/1000;
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
locationManager.requestLocationUpdates(provider, 2000, 3,
locationListener);
这取决于你的曲目。您始终测量起点和当前位置之间的距离。如果你 运行 在一条直线上,没关系 - 距离总是增加:
但是如果你的轨道是弯曲的,你会得到一个错误。看下面的图片:
你运行沿着实线从起点到终点,刚过曲线,距离就变小了。总距离将是虚线。
极端情况是在同一点开始和结束,因为你会得到零距离!
您必须始终测量当前位置与上一个位置之间的距离,并将所有距离相加。
在我的 android 运行 应用程序中,我使用 android.location.Location.distanceTo(startLocation) 获取我开始 运行ning 的 startLocation 和我停止的 endLocation 之间的距离 运行宁。但是当i 运行时,距离有时会增加,有时会减少。有人帮我解决问题吗?
我的代码是这样的:
LocationManager locationManager = (LocationManager) getSystemService(
Context.LOCATION_SERVICE);
String provider = LocationManager.GPS_PROVIDER;
Location startLocation = locationManager
.getLastKnownLocation(provider);
LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
double distance = location.distanceTo(startLocation)/1000;
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
locationManager.requestLocationUpdates(provider, 2000, 3,
locationListener);
这取决于你的曲目。您始终测量起点和当前位置之间的距离。如果你 运行 在一条直线上,没关系 - 距离总是增加:
您必须始终测量当前位置与上一个位置之间的距离,并将所有距离相加。