Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 环路dosen和x27的距离计算;行不通_Javascript_Arrays_For Loop_Latitude Longitude - Fatal编程技术网

Javascript 环路dosen和x27的距离计算;行不通

Javascript 环路dosen和x27的距离计算;行不通,javascript,arrays,for-loop,latitude-longitude,Javascript,Arrays,For Loop,Latitude Longitude,我现在正在开发测试地理定位应用程序 我发现一些代码有助于计算两点之间的距离(使用经纬度坐标) 现在我想做的是,把这个公式循环一下,得到的距离不仅仅是两点,还有很多点 假设我得到了一个参考点,点X,和许多其他点,我想得到X和A,X和B之间的距离,依此类推 其他点的每个经度和纬度都设置在关联维度数组中,如下所示 var response = ( { id = 2; latitude = "50"; longitude = "0"; usern

我现在正在开发测试地理定位应用程序

我发现一些代码有助于计算两点之间的距离(使用经纬度坐标) 现在我想做的是,把这个公式循环一下,得到的距离不仅仅是两点,还有很多点

假设我得到了一个参考点,点X,和许多其他点,我想得到X和A,X和B之间的距离,依此类推

其他点的每个经度和纬度都设置在关联维度数组中,如下所示

    var response = (

    {

    id = 2;

    latitude = "50";

    longitude = "0";

    username = AAA;

    },

    {

    id = 5;

    latitude = "51";

    longitude = "-1";

    username = BBB;

    },

    {

    id = 6;

    latitude = "52";

    longitude = "-3";

    username = CCC;

    }

    )


    //and pointX data is
    var lat1 = "50";
    var lon1 = "0";
我尝试的是

    for(var i = 0; i < response.length; i++){

        var lat2 = response[i].latitude;
        var lon2 = response[i].longitude;

    //distance in kilometer
    function distance(lat1, lon1, lat2, lon2,response) {
        var radlat1 = Math.PI * lat1/180;
        var radlat2 = Math.PI * lat2/180;
        var radlon1 = Math.PI * lon1/180;
        var radlon2 = Math.PI * lon2/180;
        var theta = lon1-lon2;
        var radtheta = Math.PI * theta/180;
        var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
        dist = Math.acos(dist);
        dist = dist * 180/Math.PI;
        dist = dist * 60 * 1.1515;
        dist = dist * 1.609344;
        return response[i].distanceKm = dist;
    }
for(变量i=0;i
但当我运行此命令并输出时,例如,响应[1]。距离km未定义。smthng似乎出错。但我不知道。。。 有什么建议吗


提前谢谢。

您的
响应
代码声明没有声明为数组。它使用了
,而不是像数组那样使用
[
]
。因此,没有
响应[1]
(例如,它是未定义的)

数组是使用
[
]
声明的,如下所示:

var response = [ /* comma separate data elements here */ ];

正如jfriend00所说,
response[1]
未定义。此外,您的对象文字定义不正确:

{  id = 5;
   latitude = "51";
   longitude = "-1";
   username = BBB;
 },
应该是:

{  id : 5,
   latitude : "51",
   longitude : "-1",
   username : BBB
 },

等等。

我在响应对象的任何地方都看不到
distanceKm
。对象没有本机
length
-属性,因此您的
for
-循环永远不会执行。