2010-10-01 141 views
16

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

+1

http://堆栈溢出。com/questions/1420045 /如何找到距离纬度和经度的两个位置 – ArK 2010-10-01 11:31:15

回答

8

GPS坐标是WGS84椭球体上的地理坐标。在这个模型下,Vincenty的公式给出了亚毫米级精度的结果。对于大多数应用来说,这或者是矫枉过正或者实际上是欺骗性的,因为地球表面不是由WGS84建模的。

可以比较的距离计算on this page的各种方法accurracy(断开链接;检查source code代替)。正如你所看到的,球面和微分近似(后者使用具有正确局部度量的毕达哥拉斯定理)在很多情况下是不准确的。

其余方法中,第一种方法使用球体的平均半径从地理纬度转换为地心纬度,而第二种方法使用余弦规则在“小”距离的情况下获得更精确的结果(其中'小'主要取决于纬度的差异)。

仅包含这两种方法can be found here一个单独的脚本,它提供了一个名为distance()和期望四个参数函数:两个纬度,经度差(所有单位为弧度)和指示该距离是否是“小”一个布尔标志。

+0

如何使用此distance.js脚本? – powtac 2011-03-17 10:10:24

+0

@powtac:将示例代码添加到http://mercurial.intuxication.org/hg/js-hacks/raw-file/tip/geo/distance.js;如果您发现更方便的话,可以随意修改脚本以包含纬度/经度转换... – Christoph 2011-03-17 22:00:58

+0

此文章中的所有链接现在都已被删除。 – 2014-05-09 19:55:03

8

This page拥有用于计算两个地理位置之间距离的JavaScript代码,如果这就是您所追求的。

3

这取决于你想要的准确度。

你可以通过基本的三角形三角操作来解决它 - 即找出它们的经度之间的差异,这是一方;然后是纬度之间的差异,那是第二个。现在你可以很容易地用初中数学计算第三方(即两者之间的实际距离)。然而,这种方法忽略了地球表面的曲率,所以如果你需要考虑这一点,你需要开始变得更聪明一些。但是,除非距离相当大或者您需要非常高的准确度,否则您无需担心。对于大多数用途来说,基本的trig方法很好。

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

23

如果你使用谷歌地图API第3版,你可以计算出距离如下:

附上谷歌地图 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); 
+0

不错,但不要忘记,在你必须付费之后,每天要记录25000个请求,所以当你在你的应用程序或网站上使用它时要小心。 – Matohawk 2014-07-08 01:36:53

+0

@Matohawk计算距离没有查询到G后端发送!因此,每天使用此功能超过25000次没有限制。 – powtac 2014-07-08 16:20:01

+1

谢谢,我不知道它是有道理的,所以我们不需要google api。 我相信谷歌计算在他们的服务器上的值来优化计算。 – Matohawk 2014-07-09 21:22:18