Phonegap地理位置.watchPosition未更新iPhone上的位置



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

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

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

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

有人对这个问题有类似的经验/解决方案吗?

我解决了我的问题,如下所示。事实证明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
});

现在,GPS位置每5秒正确返回一次。

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

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

最新更新