Может ли потребоваться много времени для того, чтобы `locationManager: didUpdateToLocation: fromLocation:` был достигнут после вызова `startUpdatingLocation`? - PullRequest
0 голосов
/ 23 января 2012

До сих пор, мой опыт показывает, что locationManager:didUpdateToLocation:fromLocation: вызывается почти сразу после того, как я позвонил startUpdatingLocation.

Однако мне нужно знать: могу ли я рассчитывать на то, что это всегда так быстро, т.е.почти мгновенно?Существуют ли сценарии, в которых это может занять много времени?Если да, то что это за сценарии?

(Конечно, в некоторых случаях вместо этого вызывается метод locationManager:didFailWithError:. Поэтому можно также спросить, можно ли полагаться на него, если этот метод вызываетсяпочти мгновенно.)

Ответы [ 3 ]

0 голосов
/ 23 января 2012

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

Я делаю этот код для фильтрации обновлений местоположения

   NSTimeInterval secondsSinceLastPoint = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp];
    if(secondsSinceLastPoint < 2)
    {
        return NO; //Not valid.
    }
0 голосов
/ 23 января 2012

Нет, вы не должны зависеть от временных характеристик, которые не указаны в спецификации API.

Более того, первые обновления местоположения, которые вы получите, могут быть очень далёкими, если схема GPS или другие радиостанции простопросыпаться из выключенного состояния.

0 голосов
/ 23 января 2012

Если у вас нет совершенно сильного сигнала GPS или его нет вообще, CoreLocation может решить попытаться определить ваше местоположение с помощью сети Wi-Fi или мобильного Интернета.В этом случае эта задача может занять некоторое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...