2

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

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

另外,有没有办法可以查出设备是否有gps芯片?我知道我可以简单地查看 UIDevice 中的设备类型并区分 touch 和 iphone,但是没有 GPS 和 GPS 的 iPhone 怎么样?

谢谢!

4

3 回答 3

1

对于您的最后一个答案,我会向您指出这个 SO question。根据它的 iPhone1,1 或 iPhone1,2 可以判断它是否有 GPS 芯片。

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

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

高温高压

于 2009-08-04T07:56:07.550 回答
1

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

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

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

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

于 2009-08-04T08:06:38.933 回答
0

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

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

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

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

于 2009-08-04T08:03:55.600 回答