首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的Cordova地理位置如此不准确

为什么我的Cordova地理位置如此不准确
EN

Stack Overflow用户
提问于 2015-09-25 13:47:34
回答 1查看 145关注 0票数 0

我正在为飞行员跟踪和分享模块,该应用程序是与爱奥尼亚和科尔多瓦框架内的AngularJS构建。我目前只为android开发和测试。

情况:有四个按钮,第一个按钮检查gps是否启用,第二个按钮开始跟踪,第三个按钮停止跟踪,第四个按钮在互联网连接稳定的情况下将trackdata发送到web-API。我不能保证在空中100%的连通性,所以我不能将跟踪到的每个航点的跟踪数据直接发送到api -我必须存储它,直到飞机再次降落在地面上。

问题:跟踪的航点(1)时间/时间高度可变(我无法在我的测试轨道上获得任何模式)和(2)跟踪的高度/方向/速度数据没有记录在一些跟踪点上。

我的飞行测试路线大约是40分钟。我每隔60秒追踪一次。所以我必须至少得到35-40个跟踪点。但是:我在那条路线上只能得到9到15个跟踪点..

跟踪点:

1442050712218|51.4514495|6.8892898|null|null|null;12.9.2015 11:38:32 1442051327924|51.5183441|6.8183962|null|null|null;12.9.2015 11:48: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

代码语言:javascript
复制
.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秒跟踪一次,并且丢失的数据也将被记录?该功能对于应用程序和网络服务至关重要,用于学员飞行员的单人飞行训练。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-09-25 15:27:46

这只是一个想法:

超时不是一个准确的任务,也就是说,当所有其他任务都完成时,超时才是有效的。更像是:你应该每隔60秒跑一次。

在您的例子中,我将连续保存位置,并编写一个“时钟/计时器”,名为“每秒”。在你的脚本中,你计算确切的开始时间,例如: 09:27:16。在开始时间+x* 60秒后,你在时钟中触发最终保存位置。

如果这不起作用,我将使用Web Worker对其进行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32775621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档