Для свойства mkmapview.userslocation установлено значение 0,0 после разрешения приложению использовать текущее местоположение.

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

Я устанавливаю для свойства map.showsUserLocation значение YES в viewDidLoad, и когда карта загружается на экран, появляется синяя точка, но когда я пытаюсь получить координаты с помощью map.userlocation.coorinate, они равны 0,0.

Выполнение программы идет - (void) viewDidLoad: 1) установите для showUserLocation значение YES 2) Установите таймер для вызова метода через 6 секунд, который захватывает местоположение пользователя из свойства map.userLocation

- (void) getUsersLocation 1) распечатать местоположение пользователей

Этот процесс отлично работает после первой загрузки представления, но когда представление загружается в первый раз, и пользователь должен предоставить разрешение на использование своего местоположения, координаты возвращаются 0,0

Кто-нибудь знает, почему это происходит и как я могу это обойти?

Спасибо!


person jmurphy    schedule 15.12.2009    source источник


Ответы (2)


вместо того, чтобы произвольно ждать шесть секунд, вы должны реализовать CLLocationManagerDelegate и замечать, когда

locationManager:didUpdateToLocation:fromLocation:

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

person David Maymudes    schedule 15.12.2009

Дэвид прав, но я заметил, что иногда вызываю этот метод с местоположением 0,0. Вам следует игнорировать любые такие вызовы, если вы не думаете, что ваше приложение может использоваться в море у западного побережья Африки.

person Jane Sales    schedule 17.12.2009