我有两个GEO位置。如何计算它们之间的距离?
答案 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的地图服务(或其他几个类似的替代方案)。