您已安装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变量的值分配之下时,它会在控制台上提供结果,但是当我在问题中显示时我在外面控制它时,它会显示空字符串。它发生了什么?
答案 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
});