两个lat,lon点之间的距离

Vas*_*lis 6 google-maps distance latitude-longitude

是否可以比较经典方式的距离(2点之间的距离d = sqrt(pow(lat2-lat1, 2) + pow(lon2-lon1, 2)):),使用从谷歌apis返回的纬度和经度,没有任何转换为​​米或某些?我需要它只是为了比较,找到从一系列点到参考点的最近点.例如:

让我们说我们有两个(lat,lon)点:(40.2535425,22.88245345)和(40.2565795,22.8884539)我们想找到女巫最接近(40.2335425,22.83245345).可以应用上面的代码来查找距离吗?或者我们需要找到距离,比如以米为单位(使用半正式公式或其他),首先是参考点的每个点,然后比较这些值?

我问这个问题,因为我不知道google apis返回的值究竟是什么,作为lat,lon!我的意思是它们不是deg-min-sec吗?

谢谢...

Mar*_*tos 3

不,因为经线向两极汇聚。如果您的点相对较近,您可以这样估算距离:

d = sqrt(pow(lat2-lat1, 2) + cos(lat1)*pow(lon2-lon1, 2))
Run Code Online (Sandbox Code Playgroud)

如果您需要在长距离上获得更高的精度,有几个用于计算大圆距离的奇特公式,但我发现转换为单位圆上的 3D 坐标然后执行简单的毕达哥拉斯距离,然后是 2 sin -1 ( d /2)转换回角度(尽管我可以理解有些人可能会发现这并不简单,:-)。