我目前正在使用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];
}
Run Code Online (Sandbox Code Playgroud)
感谢任何优化技巧,以加快这一进程.
我有多个视图控制器需要获取用户的位置,所以我想创建一个单独的类,ViewControllers可以调用该类来获取用户的最新位置.
locationManager:didUpdateToLocation:fromLocation返回void.一旦计算出用户的纬度和经度,我如何将纬度和经度数据传回我的ViewControllers?
我可以尝试在我的locationManaging类中编写getter和setter,但是如果我这样做,我怎么知道何时从我的ViewController类中调用latitude getter和longitude getter方法?如何保持ViewController的主线程等待来自locationManaging类的纬度和经度值?
谢谢!