Пытаюсь построить карту, используя широту, lng для базы данных sqlite, но НЕ МОГУ определить свое местоположение до того, как карта будет нарисована.УГГГ!
Вопрос
Что я могу сделать:Возьмите базу данных sqlite с 100 точками широты и СПГ и поместите эти пины на карту.Выглядит ВЕЛИКОЛЕПНО!
Что я хотел бы сделать, так это узнать свое местоположение, ПРЕЖДЕ чем рисовать свою карту.Но кажется, что:
- (недействительный)LocationManager: (CLLocationManager *)менеджер обновил местоположение: (CLLocation *)Новое местоположение из местоположения: (CLLocation *) Старое местоположение
ВСЕГДА срабатывает ПОСЛЕ запуска viewDidLoad (void).НЕЗАВИСИМО от того, куда я его вставлю.
Что мне нужно сделать, это создать заставку, ОСТАНОВИТЬСЯ на ней, пока я не получу местоположение, использовать эту широту и lng для поиска в моей базе данных sqlite местоположений в радиусе стольких миль от меня.
Вот мой след:
Ввод -[RootViewController initWithTabBar]
Ввод -[RootViewController viewDidLoad]
Ввод -[RootViewController LocationManager:didUpdateToLocation:fromLocation:]
И вот чего я действительно хочу:
Ввод -[RootViewController initWithTabBar]
Ввод -[RootViewController LocationManager:didUpdateToLocation:fromLocation:]
Ввод -[RootViewController viewDidLoad]
Теперь я думаю (работая с tabbarcontroller), должен ли я каким-то образом передать это обратно в делегат моего приложения?Заморозить все приложение, пока я не получу местоположение?Это мои последние мысли.
спасибо за любые советы, зацепки, фрагменты...!!!Я искал несколько дней, но безуспешно.
Спасибо!!!!
Решение
Вы определенно не хотите "замораживать" приложение, и вы определенно хотите выполнять как можно меньше работы в вашем делегате приложения. applicationDidFinishLaunching:
метод, насколько это возможно.Что я мог бы порекомендовать:
- Есть два вида:одним из них является "реальный" вид с картой, (предположительно) управляемый каким-либо контроллером вида.Другой - это просто "ожидающий" просмотр с сообщением пользователю и
UIActivityIndicatorView
, или что-то в этом роде. - Когда ваше приложение запустится, загрузите и отобразите режим ожидания в окне вашего приложения и запустите диспетчер местоположений, чтобы найти текущее местоположение пользователя.
- Когда у вас будет достаточно информации о местоположении, загрузите реальный вид, добавьте его в окно и удалите ожидающий вид.(Может быть, с приятной анимацией перекрестного затухания или что-то в этом роде.)
Вы также можете добавить оба вида и просто перевернуть их hidden
свойства в нужное время.Но смысл в том, чтобы дать пользователю возможность на что-то посмотреть, не пытаясь при этом бороться с изначально асинхронной природой расположения ядра.