两个坐标之间有多少公里

时间:2013-07-23 15:54:21

标签: javascript jquery coordinates coordinate-systems coordinate-transformation

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

等等。

FirstCoor = 33.45674,44.3453453 SecondCoor = 34.53434,45.345325

如何在这2个坐标之间获得km?

是那个或复杂的simle公式吗?

2 个答案:

答案 0 :(得分:1)

你想要两点之间的所谓“great-circle distance”。这基本上是球体表面上两点之间的最短路径。 (地球不是相当一个球体,但它足够接近。)

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

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

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

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

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

在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位,准确性比一些人警告的要好得多。它可以轻松处理不到一公里的距离,即使在不到一米的距离内,也可以与其他方法相当接近。

答案 1 :(得分:0)

我认为你需要旅行的能力。对?以下链接中的公式仅给出了从一个点到另一个点的直线判断。

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

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

找到它

也回答这个问题。    working out distances between two points using google maps api?