【发布时间】:2009-11-27 18:20:56
【问题描述】:
我记得在某处(我忘了在哪里)读到,如果 iPhone 应用程序只运行一次 CLLocationManager,它并没有得出最准确的结果。
这是否准确,如果是,我该如何解决这个问题?我想得出最准确的 GPS 结果,我想知道是否只有一次会产生最好的结果。
感谢您的帮助!
【问题讨论】:
标签: iphone sdk location cllocationmanager
我记得在某处(我忘了在哪里)读到,如果 iPhone 应用程序只运行一次 CLLocationManager,它并没有得出最准确的结果。
这是否准确,如果是,我该如何解决这个问题?我想得出最准确的 GPS 结果,我想知道是否只有一次会产生最好的结果。
感谢您的帮助!
【问题讨论】:
标签: iphone sdk location cllocationmanager
CLLocationManager *locationManager.desiredAccuracy = kCLLocationAccuracyBest;
将为您返回最佳结果。委托方法
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
将继续根据您设置的准确性首选项返回用户的位置。
如果您只需要该位置一次,您需要记得在self 上致电stopUpdatingLocation。如需持续更新用户位置,请勿拨打stopUpdatingLocation
我正在使用 CoreLocation 来获取用户的位置,这对我来说非常准确。
【讨论】:
您阅读的内容很可能来自iPhone Application Programming Guide:
检索用户当前的 位置,创建一个实例 CLLocationManager 类和配置 它具有所需的精度和 阈值参数。开始 接收位置通知, 为对象分配一个委托和 调用 startUpdatingLocation 方法 开始确定 用户的当前位置。新的时候 位置数据可用时, 位置经理通知其分配 委托对象。如果位置更新 已经发货了,可以 还可以获取最新的位置数据 直接来自 CLLocationManager 对象而不等待新事件 待发货。
[...]
检查事件的时间戳是 推荐因为位置 服务经常返回最后缓存的 立即定位事件。它可以 需要几秒钟来获得一个粗糙的 位置修复,所以旧数据简单 作为反映最后的一种方式 已知位置。您还可以使用 准确性作为确定的一种手段 是否要接受事件。 当它接收到更准确的数据时, 定位服务可能会返回额外的 事件,具有准确度值 反映改进 相应地。
【讨论】: