因此,过去两个小时来我一直遇到这个问题。我正在尝试通过使用导航器对象来获取用户的位置,并且能够获取经度和纬度值,但是当我尝试返回它并将其用作Google Maps LatLng对象的变量时,它返回未定义。

这是代码:

function getCurrentLat(){
    var lat
    if(navigator.geolocation){

        navigator.geolocation.getCurrentPosition(function(position) {
            lat = position.coords.latitude;
            alert(lat);
        });
        alert(lat);
    }else{
        console.log("Unable to access your geolocation");
    }
    return lat;
}


getCurrentPosition函数内部的第一个警报将显示正确的纬度,但是,函数外部的第二个警报显示为未定义。我如何才能在getCurrentPosition()函数外部正确显示该变量?

最佳答案

getCurrentPosition进行回调,并且在该函数中,您最终具有不同的内部范围(并且可能不会立即执行)。因此,您可以执行此操作的唯一方法是返回将来或接受回调,例如:

function getCurrentLat(callback){
    if(navigator.geolocation){

        navigator.geolocation.getCurrentPosition(function(position) {
            callback(position.coords.latitude);
        });
    }else{
        console.log("Unable to access your geolocation");
    }
}


否则,很清楚为什么lat是不确定的,因为getCurrentPosition直到函数退出后才有机会执行和调用回调。

10-07 12:04