如何将cordova地理定位结果存储在变量中?

时间:2015-06-10 10:04:48

标签: angularjs cordova ionic-framework ionic ngcordova

您已安装ngCordova并尝试使用此功能

访问lat long值
$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变量的值分配之下时,它会在控制台上提供结果,但是当我在问题中显示时我在外面控制它时,它会显示空字符串。它发生了什么?

1 个答案:

答案 0 :(得分:1)

编辑:当您将其放入console.log函数时,您看到正确.then输出的原因是此代码实际上是异步执行的。您可以从this question on StackOverflow了解有关它的更多信息。

我会试着用我的话来解释:当你调用.getCurrentPosition函数时,你只需“留下它”,继续执行所有其他代码,然后“等待它完成” - 你等待它在.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
    });