Получить текущий город и страну от CLGeocoder?

Я по всему интернету пытался узнать, как получить город и страну из CLGeocoder . Я могу легко получить долготу и широту, но мне нужна информация о городе и стране, и я продолжаю использовать устаревшие методы и т. Д. Любые идеи? В основном нужно получить местоположение, а затем указать NSString для страны и NSString для города, поэтому я могу использовать их для поиска дополнительной информации или размещения их на этикетках и т. д.

10
nl ja de

1 ответы

Вам нужно немного пересмотреть свою терминологию - CLGeocoder (и большинство геокодеров) не даст вам «город» per-se - он использует такие термины, как «Административная область», «Субадминистративная область» и т. Д. Объект CLGeocoder вернется массив объектов CLPlacemark, которые вы можете запросить для необходимой информации. Вы запускаете CLGeocoder и вызываете функцию reverseGeocodeLocation с местоположением и блоком завершения. Вот пример:

    if (osVersion() >= 5.0){

    CLGeocoder *reverseGeocoder = [[CLGeocoder alloc] init];

    [reverseGeocoder reverseGeocodeLocation:self.currentLocation completionHandler:^(NSArray *placemarks, NSError *error)
     {
         DDLogVerbose(@"reverseGeocodeLocation:completionHandler: Completion Handler called!");
         if (error){
             DDLogError(@"Geocode failed with error: %@", error);
             return;
         }

         DDLogVerbose(@"Received placemarks: %@", placemarks);


         CLPlacemark *myPlacemark = [placemarks objectAtIndex:0];
         NSString *countryCode = myPlacemark.ISOcountryCode;
         NSString *countryName = myPlacemark.country;
         DDLogVerbose(@"My country code: %@ and countryName: %@", countryCode, countryName);

     }];
    }

Now note that the CLPlacemark doesn't have a 'city' property. The full list of properties can be found here: CLPlacemark Class Reference

18
добавлено
Город, связанный с меткой, находится под ключом «местность».
добавлено автор halbano, источник
Спасибо. Это хороший код для получения названия города, используя CLGeocoder, очень легко и быстро реализовать ...
добавлено автор Arpit B Parekh, источник
Привет, спасибо за это - да, просто посмотрел и довольно изящный, следует полям адресной книги. Есть классный способ собрать полный адрес. Благодаря!
добавлено автор Jai Govindani, источник
Отличный ответ. Чтобы уточнить, вы можете получить название города, обратившись к ключу «Город» в свойстве addressDictionary объекта CLPlacemark * myPlacemark : ie myPlacemark.addressDictionary [@ «Город»] , но это должно быть очевидно после прочтения документов, как вы упомянули :)
добавлено автор manderson, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.