Почему моя геолокация Кордова так неточно

0

Я работаю над модулем Track & Share для пилотов, приложение создается с помощью AngularJS в рамках Ionic и Cordova. В настоящее время я разрабатываю и тестирую только для Android.

Случай. Есть четыре кнопки: сначала проверяется, включен ли gps, второй запускает отслеживание, третий останавливает отслеживание, четвертый отправляет trackdata в веб-API, если интернет-соединение стабильно. Я не могу гарантировать 100% -ную связь в воздухе, поэтому я не могу отправить трек-данные на каждую отслеживаемую путевую точку прямо на api - мне нужно ее хранить, пока самолет не будет снова на земле.

Проблема: отслеживаемые путевые точки: (1) временно/своевременно сильно изменяются (я не могу получить какой-либо рисунок на своих тестовых дорожках) и (2) данные отслеживаемой высоты/заголовка/скорости не записываются на некоторых дорожках.

Мой пройденный тест-маршрут составляет около 40 минут. Я отслеживаю каждые 60 секунд. Поэтому я должен получить как минимум минимум 35-40 точек. Но: я просто получаю от 9 до 15 треков на этом маршруте.

тчк трассы:

1442050712218 | 51.4514495 | 6.8892898 | нуль | нуль | нуль; 12.9.2015 11:38:32 1442051327924 | 51.5183441 | 6.8183962 | null | null | null; 12.9.2015 11:48:48 1442051511529 | 51.8569473 | 6.8611548 | null | null | null; 12.9.2015 11:51:52 1442051732401 | 51.9828794 | 6.9063169 | null | null | null; 12.9.2015 11:55:32 1442051912503 | 52.0233909 | 6.9596959 | 1300 | 64 | 52.25; 12.9.2015 11:58:33 1442052014828 | 52.0400627 | 7.0322238 | 1332 | 75 | 51.25; 12.9.2015 12:00:15 1442052517583 | 52.1472176 | 7.3813409 | 1307 | 70 | 51.5; 12.9.2015 12:08:38 1442052746410 | 52.1859082 | 7.5392811 | 1217 | 68 | 53; 12.9.2015 12:12:26 1442053119338 | 52.224271 | 7.874347 | null | null | null; 12.9.2015 12:18:39 1442053401324 | 52.2677044 | 7.9679879 | null | null | null; 12.9.2015 12:23:21

Изображение 174551

.service('TrackingFunctions', ['$interval', '$rootScope', '$localstorage', function($interval, $rootScope, $localstorage) {

    // Erstellt einmalige "global" Referenz, dass immer die selbe Instanz angesprochen wird
    var tracker;

        this.doTracking = function(execTracking){
            if(!execTracking){ // if no tracker start new
                $localstorage.TRACKDATA = [];

                return $interval(function(){
                    $localstorage.isTrackerActive = true;
                    var geo_options = {
                        enableHighAccuracy: true,
                        maximumAge: 30000,
                        timeout: 20000
                    };
                    function geo_success(position) {
                        console.log(position);

                        var tsmp = position.timestamp;
                        var lat = position.coords.latitude;
                        var lng = position.coords.longitude;
                        var alt = position.coords.altitude;
                        var hdg = position.coords.heading;
                        var spd = position.coords.speed;

                        var ARRAYDATA = tsmp + "|" + lat + "|" + lng + "|" + alt + "|" +hdg + "|" + spd + ";";

                        $localstorage.TRACKDATA.push(ARRAYDATA);

                    }
                    function geo_error() {
                        //$scope.alt = "Fehler " + error.message + ' Error Code: ' + error.code;
                    }
                    var wpid = navigator.geolocation.getCurrentPosition(geo_success, geo_error, geo_options);

                },60000); // getrackt wird alle 60 Sekunden

            } else { // if tracker cancel
                $interval.cancel(execTracking);
                console.log("tracker deaktiviert!");
            }
        };
}])

Как я могу исправить, что приложение отслеживает каждые 60 секунд, и отсутствующие данные также будут записаны? Эта функция имеет решающее значение для приложения и веб-службы для летного обучения для сольных полетов студенческого пилота.

Спасибо.

  • 0
    Вы получаете какие-либо ошибки? Похоже, вы не регистрируете ошибки. Зарегистрируйте ошибки в обратном вызове ошибок и поделитесь выводом.
Теги:
geolocation
cordova
ionic

1 ответ

0

Просто идея:

Тайм-аут не является точной задачей, а значит, тайм-аут работает, когда выполняются все остальные задачи. Это больше похоже: вы должны запускать каждые 60 секунд.

В вашем случае я бы сохранил постоянную позицию и напишет "часы/таймер", называемые каждую секунду. В вашем скрипте вы рассчитываете точное время начала, например: 09:27:16. После старта + x * 60 секунд вы запускаете в своих часах окончательную экономию позиции.

Если это не работает, я бы проверил его с помощью веб-рабочего.

Ещё вопросы

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