如何在android应用程序中计算两点之间的距离

如何在android应用程序中计算两点之间的距离,android,distance,Android,Distance,在我的应用程序中,我试图计算一个人从一个地方到另一个地方的距离。为此,我使用的是哈弗森公式 R = earth’s radius (mean radius = 6,371km) Δlat = lat2− lat1 Δlong = long2− long1 a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2) c = 2.atan2(√a, √(1−a)) d = R.c 得到出发地点和到达地点的经纬度,我计算的是以公里为单位的距离。但也有人

在我的应用程序中,我试图计算一个人从一个地方到另一个地方的距离。为此,我使用的是哈弗森公式

R = earth’s radius (mean radius = 6,371km)
Δlat = lat2− lat1
Δlong = long2− long1
a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
c = 2.atan2(√a, √(1−a))
d = R.c 
得到出发地点和到达地点的经纬度,我计算的是以公里为单位的距离。但也有人说,这种距离计算只有在通过航空公司旅行的情况下才有效,如果用户通过公路旅行,计算结果会有所不同

如果是这样的话,我怎样才能在公路上行驶时获得正确的距离呢


朋友们,请帮帮我,当你们在公路上旅行时(即使是坐飞机旅行),地球的方位是起作用的,因为地球不是平的。但这个哈弗森公式应该已经解决了。第二,人们可能会说,当你们在公路上旅行时,你们不会在两点之间直行。你轮换了很多次。为了“精确”地说出两点之间的距离,你可能还需要考虑这些转弯。

由于火车和卡车不是沿直线行驶,而是沿飞机行驶,所以通过跑道的距离似乎更大


您需要使用路线图计算距离

使用以下公式计算两个板条之间的距离:

private double calculateDistance(double lat1, double lon1, double lat2, double lon2, String unit) 
{
      double theta = lon1 - lon2;
      double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
      dist = Math.acos(dist);
      dist = rad2deg(dist);
      dist = dist * 60 * 1.1515;
      if (unit == "K") {
        dist = dist * 1.609344;
      } else if (unit == "M") {
        dist = dist * 0.8684;
        }
      return (dist);
}

    /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
    /*::  This function converts decimal degrees to radians             :*/
    /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
    private double deg2rad(double deg) 
    {
      return (deg * Math.PI / 180.0);
    }

    /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
    /*::  This function converts radians to decimal degrees             :*/
    /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
    private double rad2deg(double rad)
    {
      return (rad * 180.0 / Math.PI);
    }
Pass lat、longs和所需距离的函数和单位(“K”表示公里,“M”表示英里)。
希望这将对您有所帮助。

此方法在标准API中(Location.distanceBetween方法))
位置。distance between()
将对两个经纬度坐标点执行此操作。

我在以下链接中找到了示例代码,用于计算通过道路的距离


你想计算两个地质点之间的距离吗?天哪,我刚才读到的是撒旦:D