当设置精度较低时,为什么CLLocationManager如此懒惰?

时间:2010-10-05 12:33:00

标签: iphone geolocation gps cllocationmanager iphone-3gs

我通过测试发现,为CLLocationManager设置较低的所需精度会导致此组件的错误行为。

以下是我做过的两项测试:

  1. 将所需的准确度设置为kCLLocationAccuracyHundredMeters。然后设备无法准确找到我的位置。以下是我CLLocationManager代表的日志:

    Accuracy is 1500.000000 (desired accuracy is 100.000000)
    Accuracy is 1500.000000 (desired accuracy is 100.000000)
    

    就是这样。两个事件在30秒内,水平精度为1500。

  2. 将愿望准确度设为kCLLocationAccuracyBest。然后设备找到了我!相同的日志:

    Accuracy is 1500.000000 (desired accuracy is -1.000000)
    ...
    Accuracy is 162.957953 (desired accuracy is -1.000000)
    ...
    Accuracy is 76.356886 (desired accuracy is -1.000000)
    ...
    Accuracy is 47.421634 (desired accuracy is -1.000000)
    

    我和测试1的位置非常相似,但这一次,设备能够以我想要的精度找到我的位置(即100.0)。

  3. 我已经多次重复这两次测试,结果相同。

    我的问题是:

    “有人知道为什么当我设定kCLLocationAccuracyHundredMeters的准确度时,iPhone设备不会更加努力地找到我的位置吗?”

    我认为将精度设置为kCLLocationAccuracyBest可能会打开一些不同的硬件传感器但不能将其视为错误?相对于这个问题,我在互联网上找不到东西。

    感谢您分享自己的经验。 (测试是通过Wi-Fi和电话网络的3GS设备进行的)

1 个答案:

答案 0 :(得分:1)

更精细的设置将尝试仅通过Cell和Wi-Fi三角测量来定位您,这并不准确。 kCLLocationAccuracyBest将打开GPS模块并使用它,它应该在几英尺之内。这不是一个错误,你得到了两种情况下你要求的准确性。

不同之处在于,GPS比三角测量更能燃烧电池,这就是为什么如果你只是需要将设备放在一个粗糙的区域内就不会使用它。