我有一个有趣的问题。我的纬度值为 51.445376,经度值为 -0.190624(例如,假设这是由 androids 位置监听器接收到的)。这个特定位置(及其值)是一个兴趣点,它存储在我的数据库中。我在我的 android 上使用位置监听器,我会将用户当前位置发送到服务器,以检测用户是否已进入该特定兴趣点的一公里半径范围内。有谁知道使用什么算法来检查用户当前的经度和纬度是否在兴趣点经度和纬度的一公里半径内?或者我能看到什么?
也许有人可以帮助我,因为我的数学不是世界上最好的。
最佳答案
对于地理坐标,使用这个函数(公共(public)领域):
public static double distanceInKM(
double latStart,double lonStart,
double latEnd,double lonEnd
){
latStart=Math.toRadians(latStart);
latEnd=Math.toRadians(latEnd);
return 6370.997*Math.acos(
Math.cos(Math.toRadians(lonEnd - lonStart))*Math.cos(latStart)*
Math.cos(latEnd)+Math.sin(latStart)*Math.sin(latEnd));
}
计算最短地理路径称为“逆测地线问题”,这在 C.F.F. Karney 的文章“Algorithms for geodesics”,2012 年。上述方法显示了基于余弦球面定律的距离函数,这是计算此路径的不太准确的方法,尤其是因为它假设地球是一个完美的球体。
关于android - 检测您是否距离兴趣点一公里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7557870/