使用从谷歌apis返回的纬度和经度,没有任何转换为米或某事,可以比较经典方式的距离(2点之间的距离:d = sqrt(pow(lat2-lat1, 2) + pow(lon2-lon1, 2))
)吗?我需要它只是为了比较,找到从一系列点到参考点的最近点。例如:
让我们说我们有两个(lat,lon)点:(40.2535425,22.88245345)和(40.2565795,22.8884539) 我们想找到最接近的女巫(40.2335425,22.83245345)。可以应用上面的代码来查找距离吗?或者我们需要找到距离,比如以米为单位(使用半径公式或其他),首先是参考点的每个点,然后比较这些值?
我问这个问题是因为我不知道google apis返回的值究竟是什么,因为lat,lon!我的意思是他们不是最低分 - 是吗?
...谢谢
答案 0 :(得分:2)
不,因为经度线会聚到两极。如果您的点相对较近,则可以近似距离:
d = sqrt(pow(lat2-lat1, 2) + cos(lat1)*pow(lon2-lon1, 2))
如果你需要更长距离的准确度,有几个奇特的公式用于计算great-circle distances,但我发现在单位圆上转换为3D坐标更简单然后做一个简单的毕达哥拉斯距离,然后是2个罪 -1 ( d / 2)转换回一个角度(虽然我可以理解有些人可能会发现不发现这个更简单,: - )。
答案 1 :(得分:1)
您还可以使用新几何图书馆中的computeDistanceBetween(),我认为这会以米为单位返回距离