我记得在某处(我忘了哪里)读到如果一个iPhone应用程序只运行一次CLLocationManager,它就没有得到最准确的结果。

这是否准确,如果是,我该如何解决这个问题?我想提出最准确的GPS结果,我想知道是否只有一次会产生最佳效果。

感谢您的帮助!

有帮助吗?

解决方案

CLLocationManager *locationManager.desiredAccuracy = kCLLocationAccuracyBest;

将为您返回最佳结果。委托方法

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

将根据您设置的准确度偏好继续返回用户的位置。

如果您只需要一次该位置,则需要记住在 self 上调用 stopUpdatingLocation 。如果您需要连续更新用户的位置,请不要调用 stopUpdatingLocation

我正在使用CoreLocation来获取用户的位置,这对我的使用非常准确。

其他提示

您所阅读的内容可能来自 iPhone应用程序编程指南

  

检索用户的当前信息   location,创建一个实例   CLLocationManager类和configure   它具有所需的准确性和   阈值参数。开始   接收位置通知,   为该对象分配一个委托   调用startUpdatingLocation方法   开始确定   用户的当前位置。什么时候新的   位置数据可用,   位置管理员通知其分配的   委托对象。如果位置更新   已经交付,你可以   还可以获取最新的位置数据   直接来自CLLocationManager   对象无需等待新事件   交付。

     

[...]

     

检查事件的时间戳是   建议因为位置   服务经常返回最后一个缓存   位置事件立即。它可以   需要几秒钟才能获得粗糙   位置修复所以旧数据简单   作为反映最后一个的方式   已知位置。你也可以使用   准确性作为一种确定手段   是否要接受活动。   因为它收到更准确的数据,所以   位置服务可能会额外返回   事件,具有准确性值   反映改进   相应

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top