CLGeocoder
CLGeocoder
класс предоставляет услуги для преобразования между координатой (указанный как широта и долготой) и удобное для пользователя представление той координаты. Удобное для пользователя представление координаты обычно состоит из улицы, города, состояния и информации о стране, соответствующей данному расположению, но это может также содержать важный момент интереса, ориентиров или другой информации об идентификации. Объект geocoder является однократным объектом, работающим с основанной на сети службой для поиска placemark информации для ее указанного координатного значения.
Для использования объекта geocoder создайте его и вызовите одного из его форварда - или геокодирующие реверс методы для начала запроса. Геокодирующие реверс запросы берут широту, и долгота оценивают и находят читаемый пользователем адрес. Геокодирующие форварда запросы берут читаемый пользователем адрес и находят соответствующую широту и значение долготы. Геокодирующие форварда запросы могут также возвратить дополнительную информацию об указанном расположении, таком как интересное место или создающий в том расположении. Для обоих типов запроса результаты возвращаются с помощью a CLPlacemark
объект. Если предоставленная информация привела к многократным возможным расположениям, в случае геокодирующих форварда запросов могут быть возвращены многократные объекты placemark.
Принять умные решения относительно того, какие типы информации возвратиться, geocoder сервер использует всю информацию, предоставленную ему при обработке запроса. Например, если пользователь перемещается быстро вдоль магистрали, она могла бы возвратить имя полной области, а не имя небольшого парка, через который проходит пользователь.
Приложения должны ощущать то, как они используют геокодирование. Геокодирующие запросы ограничиваются уровнем для каждого приложения, так подача со слишком многими запросами за короткий период времени может заставить некоторые запросы перестать работать. (Когда максимальный уровень превышен, geocoder возвращает ошибочный объект со значением kCLErrorNetwork
к связанному обработчику завершения.) Вот некоторые эмпирические правила для использования этого класса эффективно:
Отправьте самое большее один запрос геокодирования на любое пользовательское действие.
Если пользователь выполняет многократные действия, включающие геокодирование того же расположения, снова использующие результаты начального запроса геокодирования вместо стартовых отдельных запросов на каждое действие.
Когда Вы хотите обновить текущее расположение пользователя автоматически (такой как тогда, когда пользователь перемещается), выпустите новые запросы геокодирования только, когда пользователь переместил значительное расстояние и после того, как разумное количество времени передало. Например, в типичной ситуации, Вы не должны отправлять больше чем один запрос геокодирования в минуту.
Не запускайте запрос геокодирования в то время, когда пользователь не будет сразу видеть результаты. Например, не запускайте запрос, если Ваше приложение неактивно или в фоновом режиме.
Компьютер или устройство должны иметь доступ к сети для объекта geocoder возвратить подробную placemark информацию. Несмотря на то, что, geocoder хранит достаточно информации локально для создания отчетов о локализованном названии страны и коде страны ISO для многих расположений. Если информация о стране не доступна для определенного расположения, geocoder может все еще сообщить об ошибке Вашему блоку завершения.
Можно использовать объекты geocoder или в сочетании с, или независимый от, классы платформы Набора Карты.
Оператор импорта
Swift
import CoreLocation
Objective C
@import CoreLocation;
Доступность
Доступный в OS X v10.8 и позже.
-
Подает геокодирующий реверс запрос для указанного расположения.
Объявление
Swift
func reverseGeocodeLocation(_
location
: CLLocation!, completionHandlercompletionHandler
: CLGeocodeCompletionHandler!)Objective C
- (void)reverseGeocodeLocation:(CLLocation *)
location
completionHandler:(CLGeocodeCompletionHandler)completionHandler
Параметры
location
Объект расположения, содержащий координатные данные для поиска.
completionHandler
Блочный объект, содержащий код для выполнения в конце запроса. Этот код вызывают, успешен ли запрос или неуспешен.
Обсуждение
Этот метод представляет указанные данные расположения серверу геокодирования асинхронно и возвратам. Ваш блок обработчика завершения будет выполняться на основном потоке. После подачи геокодирующей реверс заявки не пытайтесь инициировать другой реверс - или геокодирующий форварда запрос.
Геокодирующие запросы ограничиваются уровнем для каждого приложения, так подача со слишком многими запросами за короткий период времени может заставить некоторые запросы перестать работать. Когда максимальный уровень превышен, geocoder передает ошибочный объект со значением
kCLErrorNetwork
к Вашему обработчику завершения.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в OS X v10.8 и позже.
-
Подает геокодирующий форварда запрос с помощью указанного словаря адреса.
Объявление
Swift
func geocodeAddressDictionary(_
addressDictionary
: [NSObject : AnyObject]!, completionHandlercompletionHandler
: CLGeocodeCompletionHandler!)Objective C
- (void)geocodeAddressDictionary:(NSDictionary *)
addressDictionary
completionHandler:(CLGeocodeCompletionHandler)completionHandler
Параметры
addressDictionary
Словарь Адресной книги, содержащий информацию об адресе для поиска.
completionHandler
Блочный объект, содержащий код для выполнения в конце запроса. Этот код вызывают, успешен ли запрос или неуспешен.
Обсуждение
Этот метод представляет указанные данные расположения серверу геокодирования асинхронно и возвратам. Ваш блок обработчика завершения будет выполняться на основном потоке. После подачи геокодирующей форварда заявки не пытайтесь инициировать другого форварда - или геокодирующий реверс запрос.
Геокодирующие запросы ограничиваются уровнем для каждого приложения, так подача со слишком многими запросами за короткий период времени может заставить некоторые запросы перестать работать. Когда максимальный уровень превышен, geocoder передает ошибочный объект со значением
kCLErrorNetwork
к Вашему обработчику завершения.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в OS X v10.8 и позже.
-
Подает геокодирующий форварда запрос с помощью указанной строки.
Объявление
Swift
func geocodeAddressString(_
addressString
: String!, completionHandlercompletionHandler
: CLGeocodeCompletionHandler!)Objective C
- (void)geocodeAddressString:(NSString *)
addressString
completionHandler:(CLGeocodeCompletionHandler)completionHandler
Параметры
addressString
Строка, описывающая расположение, Вы хотите искать. Например, Вы могли указать строку “1 Бесконечный цикл, Купертино, Калифорния” для определения местоположения штаб-квартиры Apple.
completionHandler
Блочный объект, содержащий код для выполнения в конце запроса. Этот код вызывают, успешен ли запрос или неуспешен.
Обсуждение
Этот метод представляет указанные данные расположения серверу геокодирования асинхронно и возвратам. Ваш блок обработчика завершения будет выполняться на основном потоке. После подачи геокодирующей форварда заявки не пытайтесь инициировать другого форварда - или геокодирующий реверс запрос.
Геокодирующие запросы ограничиваются уровнем для каждого приложения, так подача со слишком многими запросами за короткий период времени может заставить некоторые запросы перестать работать. Когда максимальный уровень превышен, geocoder передает ошибочный объект со значением
kCLErrorNetwork
к Вашему обработчику завершения.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в OS X v10.8 и позже.
-
geocodeAddressString (_: inRegion:completionHandler:) - geocodeAddressString:inRegion:completionHandler:
Подает геокодирующий форварда запрос с помощью указанной строки и информации об области.
Объявление
Swift
func geocodeAddressString(_
addressString
: String!, inRegionregion
: CLRegion!, completionHandlercompletionHandler
: CLGeocodeCompletionHandler!)Objective C
- (void)geocodeAddressString:(NSString *)
addressString
inRegion:(CLRegion *)region
completionHandler:(CLGeocodeCompletionHandler)completionHandler
Параметры
addressString
Строка, описывающая расположение, Вы хотите искать. Например, Вы могли указать строку “1 Бесконечный цикл, Купертино, Калифорния” для определения местоположения штаб-квартиры Apple.
region
Географическая область для использования в качестве подсказки при поиске указанного адреса. Указание области позволяет Вам приоритезировать возвращенный набор результатов к расположениям, которые являются близко к некоторому определенному географическому району, который обычно является текущим расположением пользователя. Если
nil
и приложению открывают доступ для служб определения местоположения, набор результатов приоритезирован на основе приблизительного расположения пользователя. Вызов этого метода не инициировал запрос авторизации служб определения местоположения.completionHandler
Блочный объект, содержащий код для выполнения в конце запроса. Этот код вызывают, успешен ли запрос или неуспешен.
Обсуждение
Этот метод представляет указанные данные расположения серверу геокодирования асинхронно и возвратам. Ваш блок обработчика завершения будет выполняться на основном потоке. После подачи геокодирующей форварда заявки не пытайтесь инициировать другого форварда - или геокодирующий реверс запрос.
Геокодирующие запросы ограничиваются уровнем для каждого приложения, так подача со слишком многими запросами за короткий период времени может заставить некоторые запросы перестать работать. Когда максимальный уровень превышен, geocoder передает ошибочный объект со значением
kCLErrorNetwork
к Вашему обработчику завершения.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в OS X v10.8 и позже.
-
Отменяет запрос геокодирования ожидания.
Объявление
Swift
func cancelGeocode()
Objective C
- (void)cancelGeocode
Обсуждение
Можно использовать этот метод, чтобы отменить незаконченный запрос и высвободить ресурсы, связанные с тем запросом. Отмена незаконченного запроса заставляет блок обработчика завершения быть вызванным.
Если запрос не находится на рассмотрении, потому что он уже возвратился или еще не начался, этот метод ничего не делает.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в OS X v10.8 и позже.
-
геокодирование геокодирование
СвойствоБулево значение, указывающее, является ли получатель посреди геокодирования его значения. (только для чтения)
Объявление
Swift
var geocoding: Bool { get }
Objective C
@property(nonatomic, readonly, getter=isGeocoding) BOOL geocoding
Обсуждение
Это свойство содержит значение
YES
true
если процесс является продолжающимся илиNO
false
если процесс сделан или еще не инициировался.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в OS X v10.8 и позже.
Типы данных
-
Блок, который вызовут, когда запрос геокодирования завершен.
Объявление
Swift
typealias CLGeocodeCompletionHandler = ([AnyObject]!, NSError!) -> Void
Objective C
typedef void (^CLGeocodeCompletionHandler)(NSArray *placemark, NSError *error);
Обсуждение
После завершения запроса геокодирования блок этой формы вызывают, чтобы дать Вам шанс обработать результаты. Параметры этого блока следующие:
placemark
Содержит массив
CLPlacemark
объекты. Для большинства запросов геокодирования этот массив должен содержать только одну запись. Однако геокодирующие форварда запросы могут возвратить многократные объекты placemark в ситуациях, где указанный адрес не мог быть разрешен к единственному расположению.Если запрос был отменен или была ошибка в получении placemark информации, этот параметр
nil
.error
Содержит указатель на ошибочный объект (если таковые имеются) указание, почему не были возвращены placemark данные. Для списка возможных кодов ошибки посмотрите Базовую Ссылку Констант Расположения.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в OS X v10.8 и позже.