私は現在、テストジオロケーションアプリを開発しています。
2点間の距離(緯度経度座標を使用)に役立つコードをいくつか見つけました。今試しているのは、forループでその式をループして、2点だけでなく多くの距離を取得することです。
1つの参照点、点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はUndefinedです。smthngはうまくいかないようです。しかし、私にはわかりません...何か提案はありますか?
前もって感謝します。