свойству mkmapview.userslocation присвоено значение 0,0 после разрешения приложению использовать текущее местоположение
-
19-09-2019 - |
Вопрос
При первой попытке пользователя использовать текущее местоположение свойство 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.Вам следует игнорировать любые подобные вызовы, если только вы не считаете, что ваше приложение может использоваться в море у западного побережья Африки.