确定iPhone用户位置的合理时间长度

时间:2009-08-04 07:12:25

标签: iphone gps core-location

我正在编写一个基于位置的应用程序,我目前有一个iPhone第一代,但我想知道iPhone 3G或3G使用GPS芯片确定其位置需要多长时间?

据我所知,locationManager:didUpdateToLocation:fromLocation:可能会随着越来越准确的位置信息被调用(没有保证)。所以我想创建一个计时器,如果用户的位置不是通过说时间x来确定,那么我们就会停止尝试确定它并继续我们所拥有的。

另外,有没有办法可以判断设备是否有gps芯片?我知道我可以简单地看一下UIDevice中的设备类型和触摸和iphone之间的设备类型,但是没有GPS和GPS的iPhone呢?

谢谢!

3 个答案:

答案 0 :(得分:1)

对于你的上一个回答,我会指向你this SO question。根据iPhone1,1或iPhone1,2是否可以判断它是否有GPS芯片。

对于问题的第一部分,我可以告诉你我是如何在我的申请中做到的。我启动两个计时器,比如一个shortTimer和一个longTimer,它们都调用相同的回调方法。回调方法等待,直到两个计时器都被触发,并且仅在此之后继续执行其他工作。在我启动计时器之后,我开始收听位置更新。如果在locationManager:didUpdateToLocation:fromLocation方法中收到的位置是最近且足够准确的,我会过早地触发长计时器(即在它自己触发之前)。

这样,我至少等待shortTimer的超时,以获得最近准确的位置,最多等待longTimer的超时。那些合理的价值观?我会说实验。因为在继续之前我有一个带有公司徽标的闪屏,我的shortTimer相当长(即4秒)。我的longTimer设置为20秒。这似乎对我有用。

HTH

答案 1 :(得分:1)

我不是iPhone中GPS实施的专家,但我可以评论GPS装置找到其位置所需的时间。

GPS获取卫星并获得修复所需的时间取决于两件事 - 天空视图的质量和GPS了解卫星星座的数量。

第一个很重要,因为GPS必须能够看到卫星接收信号。在英国,如果你站在朝北的墙上,那么你的卫星视野很差,因为没有一个轨道超过大约50-55度,所以你将被限制在低的卫星天空和它们轨道的北极。

第二个因素取决于GPS上次看到卫星并下载轨道信息(年历和星历)后的时间。如果GPS具有最新的卫星数据和良好的视图,那么它通常可以在几秒钟内找到新的修复。如果GPS断电或数据已过时,则需要32秒加上卫星搜索时间来加载新数据。对于我使用过的大多数GPS引擎,首次修复的时间通常在45到50秒左右。

答案 2 :(得分:0)

我会说让它尝试一下确定你的位置。根据我在iphone上对谷歌地图进行三角测量的经验,它通常会给我一个答案。当然,这取决于你的粒度 - 如果你要求一公里的准确度,你可能会得到比你定义最好的答案更快的答案。

至于该设备是否是带GPS的iPhone - CoreLocation旨在为您提供不知不觉/关怀的答案。如果安装GPS,您想获得最佳位置吗?如果是这样,请使用kCLLocationAccuracyBest,您将获得设备支持的最准确的更新。

如果您获得GPS锁定,您的准确度(以水平精度测量)将小于10米。任何更大的东西,你没有GPS锁,或至少,不是一个好的。

您还会发现垂直精度将出现在支持GPS的设备上,而非在非GPS设备上启用。