navigator.geolocation.getCurrentPosition没有为iPhone5超时

时间:2015-02-25 13:14:57

标签: javascript ios iphone angularjs ionic

我在位置服务中有以下代码:

.factory('Location', function($q, $ionicLoading) {
        return {
            getCurrentPosition: function() {
                var deferred  = $q.defer();
                $ionicLoading.show({template: 'Getting Location...'});
                navigator.geolocation
                    .getCurrentPosition(
                    function (data) {
                        $ionicLoading.hide();
                        deferred.resolve(data);
                    },
                    function (error) {
                        var data = 'Error getting current position.';
                        $ionicLoading.hide();
                        deferred.reject(data);
                    },
                    {timeout:5000, enableHighAccuracy:false});
                return deferred.promise;
            }
        }
    }

我使用PhoneGap Build来构建项目,然后在我的iPhone5上安装。

一切正常,直到我关闭位置服务:

enter image description here

我希望在5秒后发生超时并显示错误。但是,我的应用程序只是挂起。没有触发任何想法超时?

1 个答案:

答案 0 :(得分:0)

这是一个语法问题。

我上面的简化代码没有包含这种错误的语法:

var data = {};
switch(error.code) {
//...error message code here
}
data.push({errorCode: error.code,
           errorMessage: errorMessage});

我修改了这个:

switch(error.code) {
//...error message code here
}
var data = {errorCode: error.code,
                errorMessage: errorMessage};