didUpdateToLocation не вызывается немедленно - PullRequest
1 голос
/ 23 августа 2011

Я использую

startMonitoringSignificantLocationChanges

для получения значений (широта, долгота). Моя проблема

  • (void) locationManager: (CLLocationManager *) менеджер didUpdateToLocation: (CLLocation *) newLocation fromLocation: (CLLocation *) oldLocation

метод не вызывается сразу после того, как [locationMangerObject startMonitoringSignificantLocationChanges]; встречается. Внутри didUpdateToLocation метода только я поддерживаю две глобальные двойные переменные для хранения широты и долготы, которые будут установлены из координат, полученных из метода didUpdateToLocation. Эти значения передаются в веб-сервис, поскольку didUpdateToLocation вызывается только с определенной задержкой, между которой параметры для (lat, lon) принимают ноль в качестве значения и передаются службе, что приводит к неожиданному ответу.

Как сделать

  • (void) locationManager: (CLLocationManager *) менеджер didUpdateToLocation: (CLLocation *) newLocation fromLocation: (CLLocation *) oldLocation

метод, вызываемый сразу после `[locationMangerObject startMonitoringSignificantLocationChanges]; встречается.

Пожалуйста, кто-нибудь предложит мне решение этой проблемы.

Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 29 августа 2011

Возможно, вам следует рассмотреть использование startUpdatingLocation метода вместо startMonitoringSignificantLocationChanges .Из документов iOS:

startUpdatingLocation

Этот метод возвращается немедленно. При вызове этого метода менеджер местоположения получает начальное исправление местоположения (которое может занять несколько секунд) и уведомляетваш делегат, вызвав его locationManager: didUpdateToLocation: fromLocation: метод.

1 голос
/ 23 августа 2011

Хорошее местоположение может занять от нескольких секунд до нескольких минут, в зависимости от того, есть ли у вас сотовая связь или подключение к Wi-Fi, и есть ли у вас хорошие сигналы со спутников GPS.Однако вы должны сразу получить кэшированное (возможно, устаревшее) местоположение.

Вы задали делегат для вашего locationMangerObject?

Вернулась ли ваша функция к циклу выполнения после вызова startMonitoringSignificantLocationChanges?

0 голосов
/ 30 января 2013
///Hmmmmm

            ...CLLocationManager does n't call delegate method properly 
            ...after lot of R&D I'm  using a watchdog method it calls " -(void)locationadd " function every 10seconds and i'm using that location for drawing the path.

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



 - (void)viewDidLoad
     {

   [NSTimer scheduledTimerWithTimeInterval:10
                                         target:self
                                           selector:@selector(locationadd)
                                           userInfo:nil
                                           repeats:YES];

        }


        -(void)locationadd   
        {

         if ([locationManager location]) {



        //i'm saving this location

    CLLocation *locat=locationManager.location;

     }

        }
        //
...