【发布时间】:2012-02-18 21:34:38
【问题描述】:
如何计算 Google 地图 V3 中五个标记之间的距离?我知道我必须使用我研究过的 Haversine 公式,甚至在这里找到了一个关于计算两个标记之间距离的帖子。如果我想在五个标记之间计算它怎么办?尝试了几个小时,但计算出的公里数非常错误。谢谢
以下代码如下:
// compute distance between the two points
var R = 6371; // KM
var dLat = toRad(location5.lat()-location4.lat()-location3.lat()-location2.lat()-location1.lat());
var dLon = toRad(location5.lng()-location4.lng()-location3.lng()-location2.lng()-location1.lng());
var dLat1 = toRad(location1.lat());
var dLat2 = toRad(location2.lat());
var dLat3 = toRad(location3.lat());
var dLat4 = toRad(location4.lat());
var dLat5 = toRad(location5.lat());
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(dLat1) * Math.cos(dLat1) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
document.getElementById("distance_direct").innerHTML = "<br/><br/><br/>The distance between the five points (in a straight line) is: "+d +" Km.";
}
function toRad(deg)
{
return deg * Math.PI/180;
}
我想我的错误之处在于以 var a 公式开头的行。如果我错了,请指出我的错误,也许有帮助的解决方案?
【问题讨论】:
-
“五个标记之间的距离”是什么意思?
-
这不只是加法(标记 A 和 B 之间的距离 + B 和 C + 之间的距离等)吗?
-
@AakashM 谷歌地图中以直线连接的五个坐标点之间的距离。
-
@KevinDTimm 我确实尝试了你几个小时前所说的,但我无法让它正常工作。请问您可以编辑我的或发布解决方案吗?
-
既然你说你知道如何计算两点之间的距离,那你肯定只是添加距离 A-B、B-C 等?
标签: javascript google-maps google-maps-api-3 haversine