2017-01-19 2 views
0

Я хочу реализовать компас в своем приложении. Я посмотрел на другой переполнение стека вопрос, и он сказал, что вы можете использовать этот кодКак сделать компас с CoreLocation

Этот код в методе viewDidLoad

var lm:CLLocationManager! 
    lm = CLLocationManager() 
    lm.delegate = self 
    lm.startUpdatingHeading() 

И эта функция где-то в контроллере представления

func locationManager(manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {} 

Но когда я запускаю свой код на симуляторе, функция не вызывается (и да, я импортировал CoreLocation и смоделировал местоположение). Что я делаю не так?

ответ

0

Если вы хотите, этот метод работает, то запустите приложение в устройстве или вы можете использовать файл GPX и моделировать местоположение в Xcode терминале

0

В первую очередь, тренажер не имеет компас. Вы просто не можете сделать это на сим.

Во-вторых, я не уверен, что вам нужно спросить у пользователя разрешение на получение информации о заголовке. Для GPS вам нужна и запись в вашем info.plist, и вызов для запроса авторизации. Я не делал код заголовка, так как требование авторизации было добавлено, поэтому я не уверен, что вам нужно сделать это для заголовков или нет. Быстрый взгляд на документы не упоминает об этом.

Я предлагаю консультации с Xcode документации по настройке заголовок обновления:

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/LocationAwarenessPG/GettingHeadings/GettingHeadings.html#//apple_ref/doc/uid/TP40009497-CH5-SW1

Ключевой бит это:

Чтобы получить заголовок события:

Создать объект CLLocationManager ,

Определить, доступны ли заголовки событий, вызвав метод класса headingAvailable.

Назначить делегата объекту менеджера местоположений.

Если вы хотите настоящие значения на севере, отправьте службы определения местоположения.

Вызовите метод startUpdatingHeading, чтобы начать доставку событий заголовка.