首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >优化CLLocationManager/CoreLocation以在iPhone上更快地检索数据点

优化CLLocationManager/CoreLocation以在iPhone上更快地检索数据点
EN

Stack Overflow用户
提问于 2009-07-04 00:43:36
回答 1查看 26.9K关注 0票数 17

我目前正在使用CoreLocation + CLLocationManager,以便将用户当前位置与N个其他位置进行比较。我面临的问题是,我正在处理位置彼此接近的城市地区,因此我需要在不牺牲太多时间的情况下,尽可能准确地定位用户的位置。我的计算非常准确,问题是,收集10个样本需要太长时间。我将在下面粘贴我的过滤器/精确度各自的代码。如果有人能对我如何加快速度发表意见,那就太好了。在我加速之前,它在我的应用程序中是相当无用的,因为它目前需要大约3-4分钟来收集信息,这一持续时间对我的目标人群来说是不接受的。

代码看起来像这样:

代码语言:javascript
复制
[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];
}

感谢您的任何优化技巧,以加速这一过程。

EN

回答 1

Stack Overflow用户

发布于 2009-07-04 02:27:40

didUpdateToLocation仅在用户移动位置时更新。这可能是零星的,我相信您已经注意到了。CCLocationManager不会定期发送更新,而是在用户移动时发送更新,或者提高准确性。当我处于固定状态并启动一个应用程序时,我通常会得到大约三次更新,然后一段时间内什么都没有。谷歌地图做了类似的事情,随着精确度的提高,显示了一个环与一个点。我建议等到您达到所需的精度(< 120.0f ),然后执行您的操作或计算。

如果你习惯了“普通”的全球定位系统,它会发送更新,而且它还在不断改进它的精度,我担心iPhone的设计不能做到这一点。

或者,您可以使用MapKit应用程序接口,向用户显示包含其位置的地图,并在他们认为位置足够准确时允许他们“接受”。我注意到,有时我会得到一个精确的目标,然后30秒后,它会将我移动到离实际位置更近50米的地方。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1081219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档