Javascript 如何计算五个标记之间的距离?

Javascript 如何计算五个标记之间的距离?,javascript,google-maps,google-maps-api-3,haversine,Javascript,Google Maps,Google Maps Api 3,Haversine,如何计算Google maps V3中五个标记之间的距离?我知道我必须使用哈弗森公式,我研究了这个公式,甚至在这里找到了一篇关于计算两个标记之间距离的帖子。如果我想在五个标记之间计算它呢?我试了几个小时,但是计算出来的公里数错了。谢谢 以下代码如下: // compute distance between the two points var R = 6371; // KM var dLat = toRad(location5.lat()-location4.lat()-loca

如何计算Google maps V3中五个标记之间的距离?我知道我必须使用哈弗森公式,我研究了这个公式,甚至在这里找到了一篇关于计算两个标记之间距离的帖子。如果我想在五个标记之间计算它呢?我试了几个小时,但是计算出来的公里数错了。谢谢

以下代码如下:

// 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 R=6371;//公里
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());
变量a=Math.sin(dLat/2)*Math.sin(dLat/2)+
数学cos(dLat1)*数学cos(dLat1)*
数学单(dLon/2)*数学单(dLon/2);
var c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));
var d=R*c;
document.getElementById(“distance_direct”).innerHTML=“


五个点之间的距离(在一条直线上)为:“+d+”Km。”; } 功能toRad(度) { 返回deg*Math.PI/180; }

我猜我错的部分是以公式开头的那行。如果我错了,请指出我的错误,也许可以提供一个解决方案?

google maps V3中的computeLength()函数应该提供您所需的内容,请参阅您使用的函数是两个坐标之间的距离。您需要计算从A->B到B->C的距离,然后在末尾将这些距离相加

var distAB = calcDist(location1,location2);
var distBC = calcDist(location2,location3);
var distCD = calcDist(location3,location4);
var distDE = calcDist(location4,location5);

var distTotal = distAB + distBC + distCD + distDE;

function calcDist(locationA,locationB)
{
    var R = 6371; // KM
    var dLat = toRad(locationB.lat()) - toRad(locationA.lat());
    var dLng = toRad(locationB.lng()) - toRad(locationA.lng());
    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)); 
    return R * c;
}

function toRad(deg) 
{
    return deg * Math.PI/180;
}

“五个标记之间的距离”是什么意思?这不只是加法(标记A和B之间的距离+B和C之间的距离等)?@AakashM它是指谷歌地图中由一条线连接的五个坐标点之间的距离。@KevinDTimm我试过你几小时前说的,但我就是不能让它正常工作。您是否可以编辑我的或发布一个解决方案?当然,您只需添加距离a-B、B-C等,因为您说您知道如何计算两点之间的距离?在传递这些位置对象时,Javascript可能是错误的(我很少使用JS)。但是如果你想做计算,那就是怎么做的。