0

是否有任何数学公式可以在不使用谷歌地图的情况下计算 2 个坐标之间的公里数。

所以等等。

FirstCoor = 33.45674,44.3453453 SecondCoor = 34.53434,45.345325

如何在这两个坐标之间获得公里?

是一个简单的公式还是复杂的?

4

2 回答 2

1

你想要两点之间的所谓“大圆距离”。这基本上是球体表面两点之间的最短路径。(地球不是一个球体,但它足够接近。

无论如何,重点是找到从球心到每个点的两条线之间的角度。乘以球体的半径,这就是你的距离。

最基本的公式之一是基于“余弦球面定律”。

角度 = acos((sin(lat1)*sin(lat2)) + cos(lat1)*cos(lat2)*cos(abs(lat2-lat1)))

(谢谢,维基百科!:))

φ 1φ 2表示两点的纬度,Δλ是经度差。Δσ是两点之间的夹角;假设它是弧度,你可以将它乘以球体的半径,这样你就可以得到连接它们的弧的长度。

在 JavaScript 中:

function arc_distance(loc1, loc2) {
    var rad  = Math.PI / 180,
        earth_radius = 6371.009, // close enough
        lat1 = loc1.lat * rad,
        lat2 = loc2.lat * rad,
        dlon = Math.abs(loc1.lon - loc2.lon) * rad,
        M    = Math;

    return earth_radius * M.acos(
        (M.sin(lat1) * M.sin(lat2)) + (M.cos(lat1) * M.cos(lat2) * M.cos(dlon))
    );
}

当这个公式第一次在计算机上使用时,它在短距离上真的很糟糕。但当时的数字也小了很多。由于 JS 中的数字是 64 位的,因此准确性比一些人警告的要好得多。它可以轻松处理不到一公里的距离,即使不到一米,它也可以合理地接近其他方法。

于 2013-07-23T17:52:39.533 回答
0

我认为您需要旅行距离。正确的?以下链接中的公式仅给出从一点到另一点的直线距离。

http://www.movable-type.co.uk/scripts/latlong.html

如果您需要从一个点到另一点的确切行程距离,请使用谷歌距离矩阵。您可以在https://developers.google.com/maps/documentation/distancematrix/上找到它

也参考这个答案。 使用谷歌地图api计算两点之间的距离?

于 2013-07-23T16:07:26.453 回答