如何在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