2013-07-25 26 views
0

我有这样的代码在我的PhoneGap应用一致性的观看位置的PhoneGap

var options = {timeout: 180000 }; 
navigator.geolocation.watchPosition(onSuccess, onError, options); 

应该是,它会激发出过三分钟,但问题是它的发动每1秒或每5秒。总之,时间间隔没有一致性。有没有其他方法可以在确切的时间间隔内得到结果?如果我以背景模式运行它,是否有方法使用此间隔继续跟踪位置。谢谢。

回答

0

Timeout简单地设置允许从呼叫传递到获取当前位置到返回时间的最大时间。这并不会影响它发送当前位置的频率,但是当它在超时(在您的情况下为3分钟)内无法获得位置时会触发Error。

http://docs.phonegap.com/en/3.0.0/cordova_geolocation_geolocation.md.html#geolocationOptions

至于背景模式中,有可能在Android和iPhone。在Android上,这似乎是默认行为。对于iPhone,在Xcode转到目标 - >信息 - >右键单击添加行。选择“所需的背景模式”,单击+符号,然后为值选择“位置更新的应用程序注册”。

编辑:如果你真的设置每3分钟检查一次地理位置(而不是像GPS响应那么快),我建议编写一个函数,它使用setInterval()来调用geolocation.getCurrentPosition而不是使用watchPosition 。

+0

我对此很好奇。我见过一些人声称在后台运行getCurrentPosition所需的全部内容都是在.plist文件中更改一行。有没有关于这个或任何其他步骤的信息?我有答案中描述的确切scenerio。 setInterval,getCurrentPosition,带有一个修改过的.plist。仍然没有背景GPS。更多信息? – mattnull