この投稿を見つけました: Google マップ - 2 点間の距離をメートルで取得する方法は?
私は同じ問題を抱えています。変数「a」には NaN 値があります。可能であれば、Google APIを使用しないことを好みます。
この Web ページのコードを使用しています: http://www.movable-type.co.uk/scripts/latlong.html
しかし、私の変数はまだ NaN を返します...
これは私のコードです:
function actualizaLimpieza(jsonData){ //jsonData keeps all points (lat&lon)
var latJSON;
var lonJSON;
var R = 6371; // km
var dLat;
var dLon;
var lat1;
var lat2;
var a;
var c;
var d;
latGPS = 43.466827534582606; //this are supossed to be gotten by gps, but for try...
lonGPS = -3.863614797592163;
for(i = 0; i < jsonData.length; i ++){
latJSON = jsonData[i].lng;
lonJSON = jsonData[i].lat;
dlat = toRad(latJSON-latGPS);
dlon = toRad(lonJSON-lonGPS);
latGPS = toRad(latGPS);
latJSON = toRad(latJSON);
a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(latGPS) * Math.cos(latJSON);
alert("a vale: " + a); //returns NaN
c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
alert("c vale: " + c);
d = R * c;
alert("d vale: " + d);
if(d < 0,010){
alert("less than 10 meters");
}
}
}
function toRad(degrees){
return degrees * Math.PI / 180;
}
それを機能させるために、さらに変更を加える必要がありますか?追加する必要があるスクリプトはありますか? この作品には誰も追加していません。
わかりました、変数の書き込みに失敗しました: dlat != dLat ... 多かれ少なかれ動作するようになりました