Частота обновления диспетчера местоположения, iphone - PullRequest
11 голосов
/ 12 сентября 2011

У меня есть менеджер CLLocation под названием «myLocation».

myLocation = [[CLLocationManager alloc] init];
    myLocation.desiredAccuracy = kCLLocationAccuracyBestForNavigation ;
    myLocation.distanceFilter = 10 ;
    myLocation.delegate=self;



    locationEnabledBool = [CLLocationManager locationServicesEnabled];



    if (locationEnabledBool ==NO || ( [CLLocationManager  authorizationStatus] == kCLAuthorizationStatusDenied)) {

    //  LocationText.text = @"Location Service Disabled ";
        UIAlertView *locationAlert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled" 
                                                        message:@"To re-enable, please go to Settings and turn on Location Service for this app." 
                                                       delegate:nil 
                                              cancelButtonTitle:@"OK" 
                                              otherButtonTitles:nil];
        [locationAlert show];
        [locationAlert release];

    }

        [myLocation startUpdatingLocation];

и функция обновления местоположения

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
{

NSLog(@"old location is %f, %f ", oldLocation.coordinate.latitude, oldLocation.coordinate.longitude);
NSLog(@"new location is %f,%f",newLocation.coordinate.latitude, newLocation.coordinate.longitude );
}

Есть ли способ найти частоту обновления диспетчера местоположения, и еслиэто может быть увеличено или уменьшено?

Ответы [ 2 ]

21 голосов
/ 12 сентября 2011

Обновление вашего местоположения начинается только при вызове метода [locationManager startUpdatingLocation].

Вы можете контролировать частоту обновления, используя NSTimer.Вызывайте метод startUpdatingLocation через регулярные промежутки времени, когда вам нужно обновить местоположение, а затем немедленно вызывайте метод stopUpdatingLocation.В следующий раз вы получите обновление местоположения только с интервалом, который вы установили в NSTimer.

2 голосов
/ 10 июля 2014

Для обнаружения даже малейших движений необходимо установить

myLocation.distanceFilter = kCLDistanceFilterNone ; 

Но, пожалуйста, имейте в виду, что использование менеджера местоположения для создания обновлений даже для самых незначительных движений может привести к значительному расходу заряда батареи.

...