2012-03-18 45 views
2

我正在通过Google Maps API(版本3)开发应用程序。如何通过Google Maps Javascript API3获得2点之间的距离?

我有2 google.maps.LatLng对象名为loc1loc2

我如何计算他们之间的距离在说米?

我试过用这个question的各种技巧将纬度/经度测量转换成米。但是,我质疑我的实施的可靠性。

我也尝试过实现一个距离矩阵,但我认为距离矩阵是很多工作只是为了计算2点之间的距离。

谢谢!

+0

这有帮助吗? http://stackoverflow.com/questions/1502590/calculate-distance-between-two-points-in-google-maps-v3 – vascop 2012-03-18 19:06:08

回答

9

听起来很简单,我建议几何库,

https://developers.google.com/maps/documentation/javascript/reference#spherical

computeDistanceBetween(from:LatLng, to:LatLng, radius?:number) 

从我的经验,结果以米为单位。请记住在标签中添加可选的几何库

<script type="text/javascript" 
src="http://maps.googleapis.com/maps/api/js?libraries=geometry&sensor=false"> 
</script> 
+0

谢谢你,'computeDistanceBetween'可靠地工作。 – dangerChihuahua007 2012-03-19 02:23:05

1

计算两点之间的距离基本上归结为毕达哥拉斯(平方和等)。然而,这并不适用于Lon(它是球体上的坐标)。我所做的是将Lat值转换为平坦的本地地图网格。然后我可以使用pythagoras来计算这些点之间的距离。我已经在Stack Overflow here上发布了这个消息。这将有你需要的所有代码。

+0

亲爱的我。转换为(比如说)OSGB比使用正弦计算来获得距离的工作量要大得多,正如几何库所做的那样。使用几何库会使一切变得简单 - 正弦波计算可能会非常棘手。 – 2012-03-18 20:12:27

+0

基本上我的观点是,一旦你完成了你的转换,一切都是简单的三角形几何。通常在绘图应用程序中,无论如何都需要将坐标转换为本地地图网格。是的,我的解决方案不涉及几何库。 – 2012-03-21 19:33:51

1

你的问题有点模棱两可。

我的意思是 - 当你说的距离,也意味着在一条直线上

  • 或行驶距离

    • 距离,
    • 或自行车距离,
    • 或步行距离。 这个问题的答案将决定你的实现。

    如果它是您需要的直线距离,那么最好使用haversine实现。 否则,您需要向google方向服务请求方向,指定“运输方式”。

  • +0

    Google的距离矩阵API应该有助于解决这个问题。它也考虑驾驶/步行距离。选中此链接https://developers.google.com/maps/documentation/distance-matrix/ – Sriram 2016-12-03 01:54:30

    相关问题