iOS. Приемы программирования
Шрифт:
Решение
Воспользуйтесь методом geocodeAddressString: completionHandler: из класса CLGeocoder.
Обсуждение
Обратное геокодирование (Reverse Geocoding) — это процесс получения обычного адреса (то есть страны, города и т. д.) на базе известного пространственного расположения (координат широты и долготы). В свою очередь, геокодирование — это процесс нахождения пространственного расположения в сетке координат на основе известного адреса. Функции геокодирования и обратного геокодирования
Пространственное местоположение геокодируется путем передачи адреса в формате NSString методу geocodeAddressString: completionHandler:, относящемуся к классу CLGeocoder. Параметр completionHandler этого метода принимает блоковый объект, не возвращающий никакого значения и имеющий два параметра:
• массив меток (типа NSArray). Метками будут обозначены те точки на карте, которые соответствуют критериям поискового запроса;
• ошибку (типа NSError), которая будет преобразована в код ошибки, если геокодирование не удастся.
Итак, сначала объявим свойство типа CLGeocoder:
Как
См. также
Раздел 9.8.
9.8. Преобразование данных широты и долготы в обычные адреса
Постановка задачи
Имеются значения широты и долготы определенной точки в пространстве. Необходимо получить ее адрес.
Решение
Получение обычного адреса на основании известных пространственных координат (x и y) называется обратным геокодированием. Для выполнения такой операции нужно создать и использовать экземпляр класса CLGeocoder, а также предоставить блоковый объект завершения. При этом необходимо гарантировать, что блоковый объект не имеет возвращаемого значения и принимает два параметра:
• массив меток (типа NSArray). Метками будут обозначены те точки на карте, которые соответствуют критериям поискового запроса;
• ошибку (типа NSError), которая будет преобразована в код ошибки, если обратное геокодирование не удастся.
Инстанцировав объект типа CLGeocoder, мы используем его метод reverseGeocodeLocation: completionHandler: для выполнения обратного геокодирования.
Верхняя часть. m-файла простого контроллера вида, применяемого для этой цели, определяется следующим образом:
В ходе загрузки вида можно выполнить обратное геокодирование: