Phonegap geolocation.watchPosition不更新iPhone上的位置

时间:2012-03-06 09:44:40

标签: ios cordova geolocation gps

我正在开发一个将当前GPS位置发送到服务器的phonegap应用程序。为此,我们有以下代码片段:

navigator.geolocation.watchPosition(gpsTracker.onNewCoordinates, gpsTracker.onError, {
    enableHighAccuracy : true,
    maximumAge: 4000, //should be default, just in case
    timeout: 5000
});

回调函数负责提交结果。在我们的Android测试设备上,这个功能很好用。然而,当我们在iOS设备上运行相同的代码时,它通常什么也不做,除非GPS接收正常,它将发送两个坐标然后停止。

看起来iOS只获取一些信息,并且在有新坐标时从不触发回调函数。

对此问题有相似经验/解决方案的人?

2 个答案:

答案 0 :(得分:3)

我解决了我的问题如下。事实证明,navigator.geolocation.watchPosition似乎在iOS上运行不佳。我使用javascript setInterval重新编写代码,该代码每5秒调用一次getCurrentPosition

navigator.geolocation.getCurrentPosition( gpsTracker.onNewCoordinates, gpsTracker.onError, {
    enableHighAccuracy : true,
    maximumAge: 4000, // should be default, just in case
    timeout: 5000
});

现在每5秒钟正确返回GPS位置。

答案 1 :(得分:0)

看看这个: http://groups.google.com/group/phonegap/browse_thread/thread/58f7ff98170b16c4 有一些关于geolocator.start()和stop()的内容,为iOS保留。也许这有帮助吗?

根据我的经验,GPS必须“热”才能提供有效位置,即必须有足够的时间连接到卫星等。通常,只有在你开始观看时它才会“热”,而不是如果你只选择单一职位。因此,在我的HTC上,getCurrentPositions()获得的值太过于不精确(与近距离相关,例如在50米内)。因此,尝试使用startWatching()找到解决方案可能是正确的方法。