我现在正在开发测试地理定位应用程序。
我发现了一些有助于两点之间距离的代码(带有纬度经度坐标)。现在我尝试的是,在 for 循环中循环该公式以获得距离,不仅是两点,而且还有很多。
假设我有一个参考点、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;
}
但是当我运行它并输出时,例如,response[1].distanceKm 是未定义的。smthng 似乎出错了。但我不知道......有什么建议吗?
先感谢您。