Ионный угловой возврат на фабрику не определен

0

Я получил представление, где я делаю карту Google, которая затем должна периодически проверять местоположение устройства.

контроллер

.controller('SearchCtrl', function($scope, $ionicLoading, TrackLocation) {
    //document.addEventListener("deviceready", onDeviceReady, false);
    //function onDeviceReady() {

        //Loads Google Map
        var mapOptions = {
            center: new google.maps.LatLng(0,0),
            zoom: 16,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            mapTypeControl: false,
            streetViewControl: false
        };
        var map = new google.maps.Map(document.getElementById("map"), mapOptions);

        var myPost = TrackLocation.track();
        console.log(myPost);
    //}
})

завод

.factory('TrackLocation', function($http, $cordovaGeolocation) {
    return {
        track: function() {

            console.log("Started Tracking");
            var lat, long;

            var watchOptions = {
                timeout : 3000,
                enableHighAccuracy: true
            };

            var watch = $cordovaGeolocation.watchPosition(watchOptions);
            watch.then(
            null,
            function(err) {
                console.log(err);
                return "lole";
            },
            function(position) {
                lat  = position.coords.latitude
                long = position.coords.longitude
                console.log(lat);
            });
            return {'lat': lat, 'long':long };
        },
        stop: function() {

        }
    };

})

Консольный журнал

Started Tracking
Object {lat: undefined, long: undefined}
103 14.408132700000001

myPost был возвращен с неопределенным значением, потому что он был вызван до того, как реальное значение было передано на lat.

Пожалуйста помоги.

  • 0
    вы возвращаете результат до того, как watch.then завершите, и вы watch.then свои переменные
  • 0
    я попытался поместить return {'lat': lat, 'long':long }; внутри function(position) и дает мне простой неопределенный .. не объект, а простой неопределенный.
Показать ещё 2 комментария
Теги:
ionic-framework
cordova

1 ответ

0

Вы должны возвращать только часы в методе отслеживания или возвращать обещание, а не при успешном обратном вызове решить это обещание с помощью лат и длинных значений.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню