所以我有以下一段 javascript,我不知道为什么每当我尝试在距离函数内控制台日志内容时,我总是收到 Nan 的消息。即使我只记录 lat1,我也会得到 NaN。但这只发生在 getDistance 函数内部,其他任何地方都工作正常。显然,函数的其余部分无法正常工作,因为所有内容都返回 NaN。
(function(){
var lat = 52.387388 ; //example lat
var lon = 4.646219 ; //example lon
function initCoords() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(createLatLong);
} else {
showError("Your browser does not support Geolocation!");
}
}
function createLatLong(position) {
var lat2 = position.coords.latitude;
var long2 = position.coords.longitude;
console.log(lat + "createLatLong");
getDistance();
}
function getDistance(lat, lon, lat2, long2) {
var R = 6371;
var dLat = (lat2-lat) * Math.PI / 180;
var dLon = (long2-lon) * Math.PI / 180;
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat * Math.PI / 180 ) * Math.cos(lat2 * Math.PI / 180 ) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
return d; }
window.onload = initCoords;
})();
这是a fiddle
最佳答案
您正在声明“getDistance()”函数,其参数隐藏了在函数外部声明的变量。要么在调用时传入参数:
getDistance(lat, lon, lat2, long2);
或者删除函数声明中的形式参数。
关于javascript - 使用javascript计算经纬度之间的距离仅返回NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24351815/