Нахавандипур Вандад
Шрифт:
Объект, являющийся делегатом CLLocationManager, должен соответствовать протоколу CLLocationManagerDelegate.
Вот как мы объявим объект нашего диспетчера местоположения в. h-файле контроллера вида (создавать экземпляр CLLocationManager может и объект, не являющийся контроллером вида):
Метод экземпляра startUpdateLocation, относящийся к классу CLLocationManager, сообщает делегату о том, удалось или нет получить информацию о местоположении пользователя. Это делается с помощью методов location Manager: didUpdateToLocation: fromLocation: и locationManager: didFailWithError: объекта делегата, именно в таком порядке.
9.4. Отображение маркеров в картографическом виде
Постановка задачи
Необходимо указать пользователю конкретное место на карте.
Решение
Воспользуйтесь встроенными аннотациями для картографических видов. Для этого выполните следующие шаги.
1. Создайте новый класс и назовите его MyAnnotation.
2. Убедитесь, что этот класс соответствует протоколу MKAnnotation.
3. Определите свойство типа CLLocationCoordinate2D для этого класса и назовите данное свойство coordinate. Убедитесь, что задали это свойство как readonly (только для чтения), поскольку свойство coordinate в соответствии с протоколом MKAnnotation определяется как readonly.
4. Далее можно (но не обязательно) определить два свойства типа NSString, а именно title и subtitle, которые могут содержать заголовок и подзаголовок вашего аннотирующего вида. Оба этих свойства также будут readonly.
5. Создайте для вашего класса метод-инициализатор. Этот метод будет принимать параметр типа CLLocationCoordinate2D. В этом методе присвойте переданный параметр местоположения тому свойству, которое мы определили на этапе 3. Поскольку это свойство является readonly, его невозможно присвоить с помощью кода вне области видимости данного класса. Следовательно, инициализатор этого класса действует здесь как перемычка и позволяет опосредованно присваивать значение этому свойству. Такие же операции мы осуществим со свойствами title и subtitle.