我一直在试图找出它.DistanceTo
给了我什么单位。
到目前为止相关的文章都提到了地理单位,但没有进一步的解释
使用经过的时间和 2 个位置,我正在计算我的设备的运行速度。
我不确定如何从distance=Location1.DistanceTo(Location2);
公里或任何其他公制单位获得结果。我必须为我的应用程序使用指标。
解决此问题或指导我解决问题的任何帮助都会有所帮助。
我一直在试图找出它.DistanceTo
给了我什么单位。
到目前为止相关的文章都提到了地理单位,但没有进一步的解释
使用经过的时间和 2 个位置,我正在计算我的设备的运行速度。
我不确定如何从distance=Location1.DistanceTo(Location2);
公里或任何其他公制单位获得结果。我必须为我的应用程序使用指标。
解决此问题或指导我解决问题的任何帮助都会有所帮助。
根据开发人员文档,该方法返回以米为单位的距离。
返回此位置与给定位置之间的近似距离(以米为单位)。
所以要以公里为单位,只需将结果除以 1000:
float distanceInMetres = Location1.DistanceTo(Location2);
float distanceInKilometres = distanceInMetres / 1000;
public double CalculationByDistance(GeoPoint StartP, GeoPoint EndP) {
int Radius=6371;//radius of earth in Km
double lat1 = StartP.getLatitudeE6()/1E6;
double lat2 = EndP.getLatitudeE6()/1E6;
double lon1 = StartP.getLongitudeE6()/1E6;
double lon2 = EndP.getLongitudeE6()/1E6;
double dLat = Math.toRadians(lat2-lat1);
double dLon = Math.toRadians(lon2-lon1);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2);
double c = 2 * Math.asin(Math.sqrt(a));
double valueResult= Radius*c;
double km=valueResult/1;
DecimalFormat newFormat = new DecimalFormat("####");
kmInDec = Integer.valueOf(newFormat.format(km));
meter=valueResult%1000;
meterInDec= Integer.valueOf(newFormat.format(meter));
Log.i("Radius Value",""+valueResult+" KM "+kmInDec+" Meter "+meterInDec);
return Radius * c;
}