【发布时间】:2015-09-25 05:47:33
【问题描述】:
我正在为 Pilots 开发一个跟踪和共享模块,该应用程序是在 Ionic 和 Cordova 框架内使用 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 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
.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 秒跟踪一次并且丢失的数据也会被记录的问题?该功能对于学生飞行员单人飞行的飞行训练应用和网络服务至关重要。
谢谢。
【问题讨论】:
-
您是否遇到任何错误?您似乎没有记录错误。在错误回调中记录错误并共享输出。
标签: angularjs cordova geolocation ionic