【问题标题】:How many km beetween 2 coordinates2个坐标之间有多少公里
【发布时间】:2013-07-23 15:54:20
【问题描述】:

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

等等

FirstCoor = 33.45674,44.3453453 SecondCoor = 34.53434,45.345325

如何获得这 2 个坐标之间的公里数?

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

【问题讨论】:

  • 这可能对你有帮助:movable-type.co.uk/scripts/latlong.html
  • 你还记得代数中的斜率公式吗?美好的时光。用它来找到以度为单位的距离,然后将度转换为公里。
  • 这是一个很好且有效的问题,但问得不好,回答得更糟。
  • 这个问题似乎是题外话,因为它是关于数学,而不是特别是编程。
  • @MarkWest 如果您将此问题的标题复制并粘贴到 Google 中,那么第一个结果就是下面粘贴的内容。这不是关于编程的问题。这是勺子喂食的问题。

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


【解决方案1】:

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

反正点就是求球心到每个点的两条直线的夹角。乘以球体的半径,就是你的距离。

其中一个最基本的公式是基于“余弦球定律”。

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

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

【讨论】:

  • @MarkWest:差不多。虽然你的坐标就像var coords1 = { lat: 33.4444, lon: 34.5454545 };.
  • @MarkWest:标准 JS 没有 print 函数,AFAIK ......即使有,你也不会那样称呼它。 (编辑:实际上,window.print() 似乎在 Chrome 中启动了一个打印机对话框。这仍然不是你想要的。)
  • 所以,这也不会返回结果警报 (arc_distance(loc1,loc2));
【解决方案2】:

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

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

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

也参考这个答案。 working out distances between two points using google maps api?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多