Как получить адрес из местоположения, возвращенного Core Location - PullRequest
0 голосов
/ 17 февраля 2012

Есть ли способ превратить местоположение долготы / широты (как возвращено Базовым местоположением) в адрес (улица и город)?

Ответы [ 2 ]

8 голосов
/ 17 февраля 2012

Лучший способ - использовать обратное геокодирование, которое доступно в классе CLGeocoder.Чтобы получить удобочитаемый адрес из геопозиции, необходимо использовать метод reverseGeocodeLocation.

Вот небольшой пример:

-(NSString *)getAddressFromLocation:(CLLocation *)location {
    NSString *address;
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error)
     {
         if(placemarks && placemarks.count > 0)
         {
             CLPlacemark *placemark= [placemarks objectAtIndex:0];

             address = [NSString stringWithFormat:@"%@ %@,%@ %@", [placemark subThoroughfare],[placemark thoroughfare],[placemark locality], [placemark administrativeArea]];

             NSLog(@"%@",address);
         }

     }];

    [geocoder release];
    return address;
}
2 голосов
/ 07 февраля 2017

Реализация Rough Swift 3 с использованием замыканий:

import CoreLocation

func getAddressFrom(location: CLLocation, completion:@escaping ((String?) -> Void)) {
    let geocoder = CLGeocoder()
    geocoder.reverseGeocodeLocation(location) { (placemarks, error) in
        if let placemark = placemarks?.first,
            let subThoroughfare = placemark.subThoroughfare,
            let thoroughfare = placemark.thoroughfare,
            let locality = placemark.locality,
            let administrativeArea = placemark.administrativeArea {
            let address = subThoroughfare + " " + thoroughfare + ", " + locality + " " + administrativeArea

            placemark.addressDictionary

            return completion(address)

        }
        completion(nil)
    }
}

Использование:

getAddressFrom(location: location) { (address) in
    print(address)
}

Вы также можете посмотреть на placemark.addressDictionary - словарь, содержащий ключи адресной книги и значения для метки. Эти ключи определены в структуре адресной книги.

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