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

StackOverflow https://stackoverflow.com/questions/1905286

Вопрос

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

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

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

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

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

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

Спасибо!

Это было полезно?

Решение

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

locationManager:didUpdateToLocation:fromLocation:

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top