javascript - 使用javascript计算经纬度之间的距离仅返回NaN

标签 javascript geolocation distance nan great-circle

所以我有以下一段 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/

相关文章:

javascript - 向angular js发送http请求

javascript - 等待用户对地理位置提示的响应,然后提交表单

python - 获取两个坐标之间的距离时出错

php - mysql - 选择彼此距离较近的记录

javascript - 文件上传无照片参数问题

javascript - Vuejs 2.3 - 同步和元素 Ui 对话框

javascript - 如何使用ES6 super在子构造函数中调用父方法?

ios - 后台位置跟踪不适用于物理设备 swift

mongodb - 从 mongodb geojson 点集合中查找最大、最小坐标值

machine-learning - 当我们有 K 最近邻的稀疏数据集时如何计算距离