Ios 加快核心定位

Ios 加快核心定位,ios,core-location,cllocationmanager,Ios,Core Location,Cllocationmanager,我有一个问题,有时需要15秒左右才能找到我的位置。相反,谷歌地图几乎每次都能在几秒钟内找到我的位置。我想知道是否有任何方法可以加快Core Location和CLLocationManager的速度,以便它更快地找到用户位置。这是我的设置 self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.activityType = CLActivityTypeFitness; self.locationM

我有一个问题,有时需要15秒左右才能找到我的位置。相反,谷歌地图几乎每次都能在几秒钟内找到我的位置。我想知道是否有任何方法可以加快Core Location和CLLocationManager的速度,以便它更快地找到用户位置。这是我的设置

self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.activityType = CLActivityTypeFitness;
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
self.locationManager.distanceFilter = kCLDistanceFilterNone;
[self.locationManager startUpdatingLocation];
[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(checkAccuracy:) userInfo:nil repeats:YES];
对于CLLocationManagerDelegate,我有:

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
    CLLocation* location = [locations lastObject];
    NSDate* eventDate = location.timestamp;
    NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
    if (abs(howRecent) < 15.0) {
        // If the event is recent, do something with it.
        NSLog(@"latitude %+.6f, longitude %+.6f\n",
          location.coordinate.latitude,
          location.coordinate.longitude);

    [[NSNotificationCenter defaultCenter] postNotificationName:kLocationChanged object:nil];

}    
-(无效)位置管理器:(CLLocationManager*)管理器更新位置:(NSArray*)位置{
CLLocation*location=[locations lastObject];
NSDate*eventDate=location.timestamp;
NSTimeInterval howRecent=[eventDate timeIntervalSinceNow];
如果(abs(最近几年)<15.0){
//如果这件事是最近发生的,那就做点什么吧。
NSLog(@“纬度%+.6f,经度%+.6f\n”,
位置坐标纬度,
位置、坐标、经度);
[[NSNotificationCenter defaultCenter]postNotificationName:kLocationChanged object:nil];
}    
}


末尾的通知将更改地图视图中心。有什么想法吗?我遗漏了什么吗?

问题在于准确性。在定位精度接近10米之前,您无法获取值。我不知道您的规格,但就个人而言,我使用更高的精度,当我获得第一个位置时,我会在位置管理器上更改所需的精度。
文件上说:

请求高精度位置数据时,初始事件 由定位服务提供的信息可能不具备您所要求的准确性 请求。定位服务以最快的速度提供初始事件 尽可能的。然后,它继续使用 您要求的准确性,并在必要时提供其他活动, 当数据可用时


但根据我的经验,情况并非如此,如果我设定了良好的精度,那么获得第一个位置需要更多的时间,可能是因为它需要“启动”更多的资源(这只是一个猜测)。

问题在于精度。在定位精度接近10米之前,您无法获取值。我不知道您的规格,但就个人而言,我使用更高的精度,当我获得第一个位置时,我会在位置管理器上更改所需的精度。
文件上说:

请求高精度位置数据时,初始事件 由定位服务提供的信息可能不具备您所要求的准确性 请求。定位服务以最快的速度提供初始事件 尽可能的。然后,它继续使用 您要求的准确性,并在必要时提供其他活动, 当数据可用时

但根据我的经验,情况并非如此,如果我设定了良好的精度,那么获得第一个位置需要更多的时间,可能是因为它需要“启动”更多的资源(这只是一个猜测)

它消耗更多的电池,但您将获得更多的位置更新。注意过滤低精度的信号,并检查GPS信号的时间戳以忽略旧的更新

它消耗更多的电池,但您将获得更多的位置更新。注意过滤低精度的信号,并检查GPS信号的时间戳以忽略旧的更新

self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;