如何将科尔多瓦地理定位结果存储在变量中?

How to store cordova geolocation result in a variable?

您好,我已经安装了 ngCordova 并尝试使用此函数访问经纬度值

$scope.lat = '';
$scope.long = '';

var posOptions = {timeout: 10000, enableHighAccuracy: false};
    $cordovaGeolocation.getCurrentPosition(posOptions)
                .then(function (position) {
                    $scope.lat = position.coords.latitude
                    $scope.long = position.coords.longitude

                }, function (err) {
                    // error
                });

console.log($scope.lat, $scope.long);

当我在 lat 和 long 变量的赋值正下方控制它时,它会在控制台上为我提供结果,但是当我在问题中显示的外部控制它时,它会显示空字符串。这是怎么回事?

编辑: 当你把它放在 .then 函数中时,你看到正确的 console.log 输出的原因是这段代码实际上是异步执行的.您可以从 this question on Whosebug.

了解更多信息

我将尝试用我的话来解释:当您调用 .getCurrentPosition 函数时,您只是 "leave it be",继续执行所有其他代码,然后 "wait for it to finish" - 然后等待它在 .then 函数中。因此,如果您将 console.log 放在 .then 函数之外,它实际上会在您获得实际坐标之前执行 - 因此,它将打印空值,因为它们可能还不存在。

这样试试:

$scope.lat = '';
$scope.long = '';

var posOptions = {timeout: 10000, enableHighAccuracy: false};

$cordovaGeolocation.getCurrentPosition(posOptions)
    .then(function (position) {
        $scope.lat = position.coords.latitude;
        $scope.long = position.coords.longitude;
      
        console.log($scope.lat, $scope.long);

    },
    function (err) {
      // error
    });