【问题标题】:Units in [Location1].DistanceTo[Location2][Location1].DistanceTo[Location2] 中的单位
【发布时间】:2013-05-02 10:36:55
【问题描述】:

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

目前相关的文章都提到了geounits,但没有进一步解释

使用经过的时间和 2 个位置,我正在计算我的设备的运行速度。

我不确定如何从 distance=Location1.DistanceTo(Location2); 以公里或任何其他 METRIC 单位获得结果。我必须为我的应用使用指标。

任何解决此问题或指导我解决问题的帮助都会有所帮助。

【问题讨论】:

  • 根据developer documentation,该方法返回以米为单位的距离。您是否尝试过在您知道之间距离的两个位置之间进行测试,以查看返回的值是否看起来像米?

标签: c# android geolocation


【解决方案1】:

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

为单位返回此位置与 给定的位置。

所以要以公里为单位,只需将结果除以 1000:

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

【讨论】:

  • Ty,我从来没有在线找到那一点信息。我的代表很低,无法投票给答案,但我这样做是出于精神
  • @bbbwex 很高兴它可以提供帮助。如果它确实回答了您的问题,那么无论您的声誉如何,您仍然应该能够将其标记为“正确答案”。
【解决方案2】:
 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;
 }

【讨论】:

  • 是的,使用haversine 公式还有很长的路要走,而不是回答我的问题。不错的尝试
猜你喜欢
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多