MKMapView и CLLocationManager
Я хочу использовать MKMapView для отображения текущего местоположения пользователя с помощью синего булавки по умолчанию, и я хочу записать движение пользователя в одно и то же время. Есть ли способ, которым я мог бы использовать диспетчер GPS (не уверен, что это CLLocationManager), MKMapView использует, когда мы разрешили ему показывать местоположение пользователя?
Я знаю, что могу создать свой собственный CLLocationManager. Но это похоже на добавление накладных расходов на мое приложение, и я хотел бы, чтобы карта и мое отслеживание оставались в синхронизации.
Я уже безуспешно исследовал следующие идеи:
- Используйте
[MKMapView showUserLocation:YES]
и добавьте KVO в поле userLocation
. Это не работает, и мне интересно, связано ли это с тем, что поле userLocation
доступно только для чтения.
- Используйте
[MKMapView showUserLocation:YES]
, создайте MKMapViewDelegate
и добавьте отслеживание, когда запрашивается аннотация для местоположения пользователя. Это не работает, потому что просмотр аннотации, по-видимому, запрашивается только один раз.
- Используйте
CLLocationManager
и попытайтесь добавить синий контакт вручную. К сожалению, я не нашел синий штырь в доступных типах контактов, поэтому я попытался создать аннотацию пользователя вручную без успеха.
Кто-нибудь знает, как я могу достичь этого и по-прежнему получаю выгоду от синего булавки или это единственное решение для использования CLLocationManager
и создания моего собственного вывода?
Ответы
Ответ 1
CLLocationManager
использует одни и те же данные во всех своих экземплярах. MKMapView
использует CLLocationManager's
данные внутренне. Тем не менее решение сделать то, что вы хотите сделать, это позволить MKMapView
сделать свое дело в отношении showUserLocation:
. В то же время создайте экземпляр CLLocationManager
и его делегата.
Сообщения делегата предоставят вам координату GPS-координаты синего булавки MKMapView's
. Все будет синхронизировано друг с другом.