2010-10-05 27 views
1

我已经通过测试发现,设置为CLLocationManager的低期望精度会导致此组件的错误行为。为什么CLLocationManager设置的准确率较低时很懒惰?

这里有2次测试中,我所做的:

  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)。

我已经多次重复这两个测试很多次,为同样的结果。

我的问题是:

“有谁知道为什么当我设置的kCLLocationAccuracyHundredMeters精度的iPhone设备不加倍努力找到我的位置?”

我假设的准确性设置为kCLLocationAccuracyBest可能会打开一些不同的硬件传感器,但不能认为这是一个错误?相对于这个问题,我找不到网上的东西。

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

回答

1

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

不同之处在于GPS导致电池灼伤的可能性远远大于三角测量,这就是为什么如果您只需将设备放置在一个粗糙的区域内就不会使用它。

+0

嗨,谢谢你的回答。它可能不是一个错误,因为你在最后得到了一个值,但是示例代码“LocateMe”被窃听了,因为你可以看到类似这样的内容:“if(location.accuracy 2010-10-08 10:49:25

+0

您正在请求特定的准确性。根据硬件和当前位置的不同,您可能会也可能不会得到它,因此您需要决定在这种情况下应采取的措施。例如,你可能在密集的城市中使用细胞三角测量的准确性比在中间不到的地方更好。 LocateMe把它扔掉了,你可以使用它(例如用一个更大的位置圆圈),或者稍后决定是否尝试一次更精确的读数,这需要权衡。 – 2010-10-08 19:35:40