我一直在互联网上试图找出如何从CLGeocoder获得城市和国家.我可以很容易地获得经度和纬度,但是我需要城市和国家的信息,而且我仍然运用不客气的方法和任何想法?它基本上需要获取位置,然后为该国家提供NSString,并为该城市提供NSString,因此我可以使用它们查找更多信息或将其放在标签等上.
解决方法
您需要修改您的术语 – CLGeocoder(和大多数地理编码器)不会给您一个“城市”的一切 – 它使用诸如“管理区域”,“次级管理区域”等术语.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); }]; }
现在请注意,CLPlacemark没有“city”属性.属性的完整列表可以在这里找到:CLPlacemark Class Reference