两个地理位置之间的距离

18

我有两个地理位置。如何计算它们之间的距离?


1
https://dev59.com/cnM_5IYBdhLWcg3wWRkF - ArK
4个回答

25
如果您使用Google Maps API v3,可以按以下方式计算距离:
包含具有几何库的Google Maps JavaScript文件:
http://maps.google.com/maps/api/js?sensor=true&libraries=geometry

现在可以使用computeDistanceBetween()方法来测量距离:

var from = new google.maps.LatLng(49.004, 8.456);
var to   = new google.maps.LatLng(49.321, 8.789);
var dist = google.maps.geometry.spherical.computeDistanceBetween(from, to);

不错,但别忘了在每天的25000个请求之后就会忘记,此后您必须付费,因此在将其用于您的应用程序或网站时要小心。 - Matohawk
@Matohawk 计算距离时不会发送查询到 G 后端!因此,每天使用此函数的次数没有限制超过 25000 次。 - powtac
1
谢谢,我不认为这有意义,所以我们不需要使用Google API。 我相信Google会在他们的服务器上计算优化计算的值。 - Matohawk
1
@Matohawk 是正确的。请查看此链接以获取完整详细信息。 每天免费提供2,500个元素,计算为客户端和服务器端查询的总和;启用计费以访问更高的每日配额,按每1000个额外元素收费$0.50美元,最高可达每日100,000个元素。 - Yash
非常好用,谢谢。 - Nathan

10

这个页面包含JavaScript代码,用于计算两个地理位置之间的距离,如果这正是你需要的。


9

GPS坐标是WGS84椭球体上的地理坐标。在这个模型下,文森提公式可以得到亚毫米级别的精度。对于大多数应用程序来说,这要么是过度精确的,要么实际上具有误导性,因为地球表面不是以那个尺度被WGS84所建模。

您可以比较各种距离计算方法的准确性在此页面上链接已失效,请查看源代码代替)。正如您所看到的,球形和微分近似法(后者使用正确的局部度量与勾股定理)在许多情况下都不准确。

在剩余的方法中,第一个方法使用椭球体的平均半径将地理纬度转换为地心纬度,而第二个方法则使用余弦定理在“小”距离(其中“小”的定义主要取决于纬度差异)时获得更准确的结果。

这里有一个只包含这两个方法的独立脚本,它提供了一个名为distance()的函数,需要四个参数:两个纬度、经度差(都以弧度表示)和一个布尔标志,指示距离是否“小”。


我该如何使用这个distance.js脚本? - powtac
@powtac:在http://mercurial.intuxication.org/hg/js-hacks/raw-file/tip/geo/distance.js中添加了示例代码;如果您发现包括纬度/经度转换更方便,请随意修改脚本... - Christoph
这篇文章中的所有链接现在都失效了。 - Judah Gabriel Himango
@JudahHimango:脚本可以从https://pikacode.com/mercurial.intuxication.org/js-hacks.tar.gz恢复;如果我不忘记的话,我会尽快将它们存放在更容易访问的地方... - Christoph
你好,你提供的链接无法访问。你能否提供其他可替代的指南? - Amaranadh Meda
@AmarnadhMeda:我在评论中发布的链接仍然可以使用;我还在答案本身中添加了源代码的链接。 - Christoph

3

这取决于您需要多高的精确度。

您可以通过基本的三角函数计算来解决它,即计算它们经度之间的差异,这是一条边;然后计算纬度之间的差异,那就是第二条边。现在,您可以使用基本的初中数学轻松地计算出第三条边(即两者之间的实际距离)。

但是,该方法忽略了地球表面的曲率,因此如果您需要考虑到这一点,您需要开始变得更加聪明。但是,除非距离非常大或您需要非常高的精确度,否则您不必担心这个问题。对于大多数目的,基本的三角函数方法都足够了。

当然,另一个要点是这些方法给你的是直线测量。这可能是您想要的,但您还可能想知道旅行的距离-即在道路上的距离。这是完全不同的,因为您需要有所有相关道路的准确地图。如果这是您需要的,那么委托给谷歌地图服务(或其他几个类似的选择之一)可能会更容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接