Javascript 环路dosen和x27的距离计算;行不通
我现在正在开发测试地理定位应用程序 我发现一些代码有助于计算两点之间的距离(使用经纬度坐标) 现在我想做的是,把这个公式循环一下,得到的距离不仅仅是两点,还有很多点 假设我得到了一个参考点,点X,和许多其他点,我想得到X和A,X和B之间的距离,依此类推 其他点的每个经度和纬度都设置在关联维度数组中,如下所示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
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
-循环永远不会执行。