iOS模拟器GPS不起作用?

时间:2014-12-18 23:50:39

标签: angularjs cordova gps

我在iOS模拟器中测试了我的应用,发现gps不起作用。 在模拟器中,我将位置设置为" Apple" 并安装corodova插件:" cordova插件添加org.apache.cordova.geolocation"。

这是我的代码:

angular.module('home', ['services'])

.controller('homeCtrl',
    function ($scope, $location, $state, serverAPI, $ionicPopup) {

        $scope.buttonType = "icon ion-search";
        $scope.buttonDisable = false;
        $scope.text = 'Search';
        var UID = JSON.parse(window.localStorage.getItem('Credentials')).UID;
        serverAPI.getUserData(UID, function (data) {
            $scope.userName = data.userName;
            $scope.points = data.points;
            $scope.fotoId = data.fotoId;
            console.log(data);
        });



        $scope.click = function () {
            $scope.buttonDisable = true;
            $scope.text = 'Searching';
            $scope.buttonType = 'icon ion-loading-a';



            //            //Grap geoLocation        
            var location = navigator.geolocation.getCurrentPosition(saveGeoData, onError);
            //

            function onError(error) {
                alert('code: ' + error.code + '\n' +
                    'message: ' + error.message + '\n');
            };

            var saveGeoData = function (geoData) {
                console.log("nach geo");
                var myPosition = {
                    'longitude': geoData.coords.longitude,
                    'latitude': geoData.coords.latitude
                };
                console.log("ss");
                console.log(myPosition.latitude);
                window.localStorage.setItem('myPosition', JSON.stringify(myPosition));
                //If geoloaction is saved successfully => Send geodata to server to receive teammate
                sendToServer(myPosition);
            }


            //Send current location to Server to receive teammate
            var sendToServer = function (myPosition) {
                serverAPI.searchPartnerToPlayWith(myPosition.longitude, myPosition.latitude, UID, function (data) {

                    //No other players around you. Server returns -1 
                    if (data == -1) {
                        $ionicPopup.alert({
                            title: 'Too bad :(',
                            template: 'Unfortunateley there are no other players around you. Try it some other time!'
                        });
                    } else {
                        window.localStorage.setItem('teammate', data.username);
                        window.localStorage.setItem('isEnummeration', data.taskType);
                        window.localStorage.setItem('task', data.task);
                        var teammatePosition = {
                            'longitude': data.longitude,
                            'latitude': data.latitude
                        };
                        window.localStorage.setItem('teammatePosition', teammatePosition);
                        //TODO: data.fotoId => request foto from server
                        $state.go('tab.play-screen');
                    }


                })
            }
        };

    })

当调用函数单击时,它只会在行中停止:

var location = navigator.geolocation.getCurrentPosition(saveGeoData, onError);

你有什么猜测我的问题?在浏览器中它工作得很好。 谢谢!

1 个答案:

答案 0 :(得分:0)

确保将此文件包含在项目中。

https://github.com/apache/cordova-plugin-geolocation/blob/master/www/geolocation.js

从那里可能是高概率原因,你的项目getCurrentPosition中不存在这个功能。