计算多个位置的距离谷歌地图



假设我有三个位置,即Kallang(A)、Paya-Lebar(B)和Bedok(C)。我试着做a->B+B->C,但距离总是让我回到a->C。为什么会这样??

kallang至paya-lebar(A-B)->2.5914199062350742 km

paya-lebar至贝多克(B-C)->4.4403012109180775 km

总(A-B-C)->7.03 km

卡尔朗至贝多克(A-C)->6.88公里

以下是我的代码:

var R = 6371; 
    var dLat = toRad(location3.lat()-location2.lat()) + toRad(location2.lat()-location1.lat());
    var dLon = toRad(location3.lng()-location2.lng()) + toRad(location2.lng()-location1.lng());
    var dLat1 = toRad(location1.lat());
    var dLat2 = toRad(location2.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;
}

我的加减运算语句有问题吗???感谢

您只需使用几何体库中内置的computeDistanceBetween方法

是的,问题是添加和减少相同的东西。由于toRad()只是一个乘法,它与+和-相关,因此与相关

var dLat = toRad(location3.lat()-location2.lat())
         + toRad(location2.lat()-location1.lat());

与完全相同

var dLat = toRad(location3.lat()-location1.lat());

最后计算出第一个点和最后一个点之间的直线距离。

如果你正在使用谷歌地图JavaScript API V3,你可以加载几何库并执行以下操作:

var indirect_distance = 
    google.maps.geometry.spherical.computeDistanceBetween(location1, location2)
  + google.maps.geometry.spherical.computeDistanceBetween(location2, location3);

最新更新