0

我正在开发应用程序,我首先将用户纬度和经度发送到服务器。服务器也有一些以前存储的坐标,现在应用程序必须检查用户坐标是否在服务器已有坐标的 1km 或 2km 半径内。

我发现的一种方法是将初始坐标作为圆心,但这并不准确。任何建议我应该遵循哪种算法和来源可以帮助我理解这一点。

4

1 回答 1

2
    R  =  6378.1;  //  radius of the Earth (km)
    dlat = deg2rad( $lat1-$lat2 ) // lattitude diference in radians
    dlang = deg2rad ( $lang1 - $lang2 ) //longitude diference in radian

地球的半径远大于 1-2 公里,所以我们可以使用毕达哥拉斯定理,我们得到了 0.03 % 的准确度 ~ 0.3 m。

   distance = R * sqrt( $dlat^2 + $dlang^2  );
   // same:   distance =  sqrt( ($dlat*R)^2 + ($dlang*R)^2)   )

这可能有助于您理解: http ://en.wikipedia.org/wiki/Spherical_coordinate_system

球坐标系与地理位置坐标系不同,但要了解您需要什么,我认为下面的链接有一个很好的解释。

如果您需要更高的准确性:请参阅工作示例部分的http://en.wikipedia.org/wiki/Great-circle_distance

当距离只有几公里时,精度差异很小,但使用我写的公式计算时间要好得多。

于 2013-03-02T10:58:05.090 回答