是否有任何数学方法可以计算在不使用谷歌地图的情况下在2个坐标之间有多少公里。
等等。
FirstCoor = 33.45674,44.3453453 SecondCoor = 34.53434,45.345325
如何在这2个坐标之间获得km?
是那个或复杂的simle公式吗?
答案 0 :(得分:1)
你想要两点之间的所谓“great-circle distance”。这基本上是球体表面上两点之间的最短路径。 (地球不是相当一个球体,但它足够接近。)
无论如何,重点是找到从球体中心到每个点的两条线之间的角度。乘以球体的半径,这就是你的距离。
最基本的公式之一是基于“余弦球面定律”。
(谢谢,维基百科!:))
φ 1 和φ 2 表示两点的纬度,Δλ< / strong>是经度之间的差异。 Δσ是两点之间的角度;假设它是弧度,你可以将它乘以球体的半径,这样就可以得到连接它们的弧的长度。
在JavaScript中:
function arc_distance(loc1, loc2) {
var rad = Math.PI / 180,
earth_radius = 6371.009, // close enough
lat1 = loc1.lat * rad,
lat2 = loc2.lat * rad,
dlon = Math.abs(loc1.lon - loc2.lon) * rad,
M = Math;
return earth_radius * M.acos(
(M.sin(lat1) * M.sin(lat2)) + (M.cos(lat1) * M.cos(lat2) * M.cos(dlon))
);
}
当这个公式首次在计算机上使用时,它真的很短距离吸。但那时的数字也相当小。 JS中的数字是64位,准确性比一些人警告的要好得多。它可以轻松处理不到一公里的距离,即使在不到一米的距离内,也可以与其他方法相当接近。
答案 1 :(得分:0)
我认为你需要旅行的能力。对?以下链接中的公式仅给出了从一个点到另一个点的直线判断。
http://www.movable-type.co.uk/scripts/latlong.html
如果您需要从一个点到另一个点的精确旅行,请使用谷歌距离矩阵。 你可以在https://developers.google.com/maps/documentation/distancematrix/
找到它也回答这个问题。 working out distances between two points using google maps api?