如何将科尔多瓦地理定位结果存储在变量中?
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
});
您好,我已经安装了 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
});