两个GEO位置之间的距离

时间:2010-10-01 10:54:11

标签: javascript

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

4 个答案:

答案 0 :(得分:23)

如果您使用Google Maps API v3,则可以按如下方式计算距离:

几何图书馆中加入 Google地图 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);

答案 1 :(得分:8)

This page包含用于计算两个地理位置距离的JavaScript代码,如果您正在追求的话。

答案 2 :(得分:8)

GPS坐标是WGS84球体上的地理坐标。在这个模型下,Vincenty的公式给出了亚毫米精度的结果。对于大多数应用来说,这可能是过度杀伤或实际上是欺骗性的,因为地球的表面没有被WGS84建模到那个尺度。

您可以比较各种距离计算方法的符合性 on this page 断开的链接;请检查source code而不是)。如您所见,对于很多情况,球面和微分近似(后者使用具有正确局部度量的勾股定理)是不准确的。

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

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

答案 3 :(得分:3)

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

你可以通过基本的三角形三角法来解决这个问题 - 即计算出它们的经度之间的差异,即一边;然后他们的纬度之间的差异,这是第二个。现在你可以用基本的初中数学计算第三面(即两者之间的实际距离)。

然而,这种方法忽略了地球表面的曲率,所以如果你需要考虑到这一点,你需要开始变得更加聪明。但除非距离很大或者您需要非常高的准确度,否则您无需担心。在大多数情况下,基本的trig方法都很好。

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