如何在android中获取两个位置之间的直线距离? [重复]

问题描述 投票:0回答:3

首先仔细阅读问题...

我需要直线距离不是步行、汽车或其他方式

看看下面给出的图片,

Straight

Google 为我们提供驾车和驾车的距离。

但我不想要它,我想要两个位置之间的直线距离(纬度 - 经度)。

显示为红线。

注意:我不想在谷歌地图上放红线,只是想要距离单位(英里,公里等)

android distance
3个回答
15
投票
a = distance in degrees //meterConversion = 1609;

b = 90 - latitude of point 1

c = 90 - latitude of point 2

l = longitude of point 1 - longitude of point 2

Cos(a) = Cos(b)Cos(c) + Sin(b)Sin(c)Sin(l)

d = circumference of Earth * a / 360 // circumference of Earth = 3958.7558657440545D km

3
投票

Haversine 函数 用于查找球体上两点之间的距离。

将其扩展到查找地球上两点之间的直线距离是相当简单的。地球不是一个完美的球体,但这仍然是使用标准测量(称为 WGS84)赤道半径的一个很好的近似值。

正如 CommonsWare 所说,您可以通过使用 distanceBetween() 来非常简单地做到这一点,它使用 Haversine 函数和 WGS84 半径。

为了更好地理解实现/数学,请查看 Python 中的示例代码


2
投票

使用以下代码找到的距离。 你只需要获取两个geoPoint的纬度和经度即可。 并在下面的计算中使用它来获得距离。

 R = 6371; // km
 d = Math.acos(Math.sin(lat1)*Math.sin(lat2) + 
              Math.cos(lat1)*Math.cos(lat2) *
              Math.cos(lon2-lon1)) * R;

计算完后就是返回距离。

R是表面半径,单位为KM,需要在计算中使用,你试试这个。我希望它对你有用。

© www.soinside.com 2019 - 2024. All rights reserved.