在我的angularjs / ionic应用程序中,我正在将跟踪服务作为后台服务运行。
为此,我运行了地理位置监视。好吧,如果由于某种原因设备(Iphone 5s)没有收到gps信号,则此后该应用程序将无法获得任何gps信号。无论设备在哪里。再次返回跟踪服务的唯一方法是打开默认地图应用程序。在地图应用程序找到我的位置之后,我的应用程序也正在获取gps信号。解释问题很复杂,如果无法很好地解释问题,抱歉。
我的代码如下所示:
var startWatch = function() {
var watchOptions = {
frequency : trackingFrequency*1000,
timeout : 60*60*1000,
maximumAge: 10*1000,
enableHighAccuracy: true // may cause errors if true
};
//watch = $cordovaGeolocation.watchPosition(watchOptions);
watch = navigator.geolocation.watchPosition(on_success,on_error,watchOptions);
};
var on_error = function(err) {
alert("Bitte schalten Sie die Ortungsdienste ein und starten Sie die Applikation neu.");
startWatch();
};
我尝试了两个插件,ngcordova的$ cordovaGeolocation插件和默认插件,但是两种情况下的行为是相同的。如果我丢失了gps信号,则它会完全丢失,直到使用本机应用程序启动gps跟踪。我在Android上进行了测试,并且IOS和Android在运行中也存在相同的问题。
保持跟踪服务正常运行的唯一方法是留在GPS信号良好的区域,那并不是一个好的解决方案。
那我想念什么呢?
感谢您的任何帮助
传递给的错误对象中应该有错误代码和/或消息on_error
。这应该告诉您发生了什么类型的错误(我认为是超时)。错误代码值对应于PositionError对象:
PositionError.PERMISSION_DENIED = 1;
PositionError.POSITION_UNAVAILABLE = 2;
PositionError.TIMEOUT = 3;
另外,尝试在错误时重置监视程序时,请确保在添加其他监视程序之前清除现有监视程序。所以尝试这样的事情:
var watch = null;
var startWatch = function() {
var watchOptions = {
frequency : trackingFrequency*1000,
timeout : 30*1000,
maximumAge: 10*1000,
enableHighAccuracy: true // may cause errors if true
};
if(watch !== null){
navigator.geolocation.clearWatch(watch);
}
watch = navigator.geolocation.watchPosition(on_success,on_error,watchOptions);
};
var on_error = function(err) {
alert("Bitte schalten Sie die Ortungsdienste ein und starten Sie die Applikation neu." + "\ncode: " + err.code + "\nmessage: " + err.message);
startWatch();
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句