Ускоряване на основното местоположение

Имам проблем, при който понякога ще ми отнеме около 15 секунди, за да намеря местоположението си. Напротив, Google Maps ще намери местоположението ми в рамките на няколко секунди, почти всеки път. Чудя се дали все пак мога да ускоря 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];

}    

}

Известието в края променя центъра на изгледа на картата. Някаква идея по въпроса? изпускам ли нещо?


person evenodd    schedule 05.11.2013    source източник


Отговори (2)


Проблемът е в точността. Не получавате стойности, докато точността на местоположението не е близо до 10 метра. Не знам за вашите спецификации, но лично аз използвам по-широка точност и когато получа първото местоположение, променям необходимата точност в диспечера на местоположението.
В документацията се казва, че:

Когато изисквате данни за местоположение с висока точност, първоначалното събитие, доставено от услугата за местоположение, може да няма точността, която сте поискали. Услугата за местоположение доставя първоначалното събитие възможно най-бързо. След това продължава да определя местоположението с точността, която сте поискали, и доставя допълнителни събития, ако е необходимо, когато тези данни са налични.

но според моя опит не е така, ако задам добра точност, отнема повече време, за да имам първото местоположение, вероятно защото трябва да "захранва" повече ресурси (е само предположение).

person Andrea    schedule 05.11.2013

self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;

Консумира повече батерия, но ще получавате повече актуализации за местоположение. Внимавайте да филтрирате сигнали с ниска точност и също така да проверявате времевия печат на GPS сигнала, за да игнорирате стари актуализации.

person Shibin S    schedule 20.03.2016