如果我将iPhone的期望精度设置为kCLLocationAccuracyKilometer (精确到一公里内),那么CLLocationManager最终会提供一个更好的位置吗?或者它会在我想要的准确度上停止。我在文档中找不到这个。
我的想法是,我需要一个快速定位的位置,但我想要更准确。我必须自己编写代码,还是自动为我完成?
发布于 2011-09-21 16:58:06
我不知道下面的是不是100%正确,但我很确定它是这样工作的:精度过滤器主要是为了节省能源而设计的。因此,如果你指定kCLLocationAccuracyKilometer对你来说就足够了,并且操作系统非常确定它可以仅使用三角测量在1公里内准确定位你,它甚至不会为耗尽电池的GPS单元供电。因此,对于你的第一个问题,一旦达到你想要的准确度,位置管理器就会停止。
关于第二个问题:我不认为准确性过滤器对你收到第一次位置更新的时间有任何影响。操作系统通常会缓存你最后一次知道的位置,即使你指定了非常高的精度,它也会几乎立即提供给你。随后的位置更新将变得越来越精确。
如果这确实是真实的行为,您应该能够自己轻松地进行测试。
发布于 2011-09-21 17:02:25
设置所需的最佳精度(但不会更高,因为位置服务消耗太多电量)。每次精度提高时,LocationManager都会调用您的CLLocationManagerDelegate的didUpdateToLocation。请尽快停止更新位置,以防止电池耗尽。
发布于 2011-09-21 18:53:19
不,它将在指定的精度处停止。如果您只请求kCLLocationAccuracyKilometer,那么GPS接收器将不会打开电源,它将不会比WiFi或蜂窝发射塔三角测量更好。[唯一的例外是,如果后台的另一个应用程序(如TomTom导航)已经开启了高精度修复,那么您也可能获得高精度(<300m)的修复)。
如果你想要更好,你必须请求它,你也可以立即请求它,你将立即获得快速修复(1000米精度)修复,立即或两个你将获得高精度GPS修复(嗯,它可能需要30秒到10分钟,取决于几个事情)。不需要特殊的编码,只需指定最终需要的精度即可。
https://stackoverflow.com/questions/7497007
复制相似问题