MKMapView и CLLocationManager

Я хочу использовать MKMapView для отображения текущего местоположения пользователя, используя дышащий синий штифт по умолчанию, и одновременно хочу записать движение пользователя. Можно ли каким-то образом использовать диспетчер GPS (не уверен, что это CLLocationManager), который использует MKMapView, когда мы включили его для отображения местоположения пользователя?

Я знаю, что могу создать свой собственный CLLocationManager. Но это похоже на добавление накладных расходов к моему приложению, и я хотел бы, чтобы карта и мое отслеживание оставались синхронизированными.

Я уже изучил следующие идеи без успеха:

  • Использовать [MKMapView showUserLocation:YES] и добавить КВО на userLocation поле. Это не работает, и мне интересно, если это связано с тем, что userLocation поле только для чтения
  • Использовать [MKMapView showUserLocation:YES], создать MKMapViewDelegate и добавить отслеживание, когда запрашивается представление аннотации для местоположения пользователя. Это не работает, потому что вид аннотации, по-видимому, запрашивается только один раз???
  • Использовать CLLocationManager и попробуйте добавить синий значок вручную. К сожалению, я не нашел синий значок в доступных типах контактов, поэтому попытался создать аннотацию пользователя вручную, но безуспешно.

Кто-нибудь имеет какие-либо идеи, как я могу добиться этого, и все же воспользоваться синей булавкой, или это мое единственное решение использовать CLLocationManager и создать свой собственный значок?

1 ответ

Решение

CLLocationManager использует одни и те же данные во всех своих экземплярах. MKMapView использования CLLocationManager's данные внутри. Тем не менее, решение сделать то, что вы хотите сделать, это позволить MKMapView делать свое дело в отношении showUserLocation:, В то же время, создать экземпляр CLLocationManager и его делегат.

Сообщения делегатов предоставят вам координаты GPS MKMapView's синяя булавка Все будет синхронизировано друг с другом.

Другие вопросы по тегам