[Location1]中的单位.DistanceTo [Location2]

时间:2013-05-02 10:36:55

标签: c# android geolocation

我一直试图找出.DistanceTo给我的单位。

迄今为止相关的文章提到了geounits,但没有进一步的解释

使用已用时间和2个位置我正在计算设备的速度。

我不确定如何从Km或任何其他METRIC单元中获取distance=Location1.DistanceTo(Location2);的结果。我必须为我的应用程序使用指标。

任何帮助解决这个问题或指导我寻求解决方案都会有所帮助。

2 个答案:

答案 0 :(得分:2)

根据developer documentation,该方法返回以米为单位的距离。

  

返回此位置与 之间的近似距离   给定的位置。

所以要以千米为单位,只需将结果除以1000:

float distanceInMetres = Location1.DistanceTo(Location2);
float distanceInKilometres = distanceInMetres / 1000;

答案 1 :(得分:0)

 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;
 }