我目前正在使用CoreLocation + CLLocationManager,以便将用户当前位置与N个其他位置进行比较。我面临的问题是,我正在处理位置彼此接近的城市地区,因此我需要在不牺牲太多时间的情况下,尽可能准确地定位用户的位置。我的计算非常准确,问题是,收集10个样本需要太长时间。我将在下面粘贴我的过滤器/精确度各自的代码。如果有人能对我如何加快速度发表意见,那就太好了。在我加速之前,它在我的应用程序中是相当无用的,因为它目前需要大约3-4分钟来收集信息,这一持续时间对我的目标人群来说是不接受的。
代码看起来像这样:
[self.locationManager setDistanceFilter:kCLDistanceFilterNone];
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
if (newLocation.horizontalAccuracy > 0.0f &&
newLocation.horizontalAccuracy < 120.0f) { // roughly an accuracy of 120 meters, we can adjust this.
[myLocs addObject:newLocation];
}
感谢您的任何优化技巧,以加速这一过程。
发布于 2009-07-04 02:27:40
didUpdateToLocation仅在用户移动位置时更新。这可能是零星的,我相信您已经注意到了。CCLocationManager不会定期发送更新,而是在用户移动时发送更新,或者提高准确性。当我处于固定状态并启动一个应用程序时,我通常会得到大约三次更新,然后一段时间内什么都没有。谷歌地图做了类似的事情,随着精确度的提高,显示了一个环与一个点。我建议等到您达到所需的精度(< 120.0f ),然后执行您的操作或计算。
如果你习惯了“普通”的全球定位系统,它会发送更新,而且它还在不断改进它的精度,我担心iPhone的设计不能做到这一点。
或者,您可以使用MapKit应用程序接口,向用户显示包含其位置的地图,并在他们认为位置足够准确时允许他们“接受”。我注意到,有时我会得到一个精确的目标,然后30秒后,它会将我移动到离实际位置更近50米的地方。
https://stackoverflow.com/questions/1081219
复制相似问题