我可以使用
检索我的iPad应用程序中的当前位置CLLocation *location = [[CLLocation alloc] initWithLatitude:[latitude floatValue] longitude:[longitude floatValue]];
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error)
{
NSLog(@"-----------------Placemark is %@-----------------", placemarks);
locationLabel.text = placemarks;
}];
,输出为,
-----------------Placemark is ("South Atlantic Ocean, South Atlantic Ocean @<-42.60533670,-21.93128480> +/- 100.00m, region (identifier <-41.51023865,-31.60774370> radius 4954476.31) <-41.51023865,-31.60774370> radius 4954476.31m"
)-----------------
我可以使用相同的信息来获取城市和国家/地区名称吗?而不是长长的信息列表?
另外,'locationLabel.text = placemarks'给出一个警告,“不兼容的指针类型从'NSArray * _strong'分配给'NSString *',我无法解决。
答案 0 :(得分:2)
您可以获得以下所有地点的详细信息
placeNameLabel.text = [placemarks[0] name];
addressNumberLabel.text = [placemarks[0] subThoroughfare];
addressLabel.text = [placemarks[0] thoroughfare];
neighborhoodLabel.text = [placemarks[0] subLocality];
cityLabel.text = [placemarks[0] locality];
countyLabel.text = [placemarks[0] subAdministrativeArea];
stateLabel.text = [placemarks[0] administrativeArea];
zipCodeLabel.text = [placemarks[0] postalCode];
countryLabel.text = [placemarks[0] country];
countryCodeLabel.text = [placemarks[0] ISOcountryCode];
inlandWaterLabel.text = [placemarks[0] inlandWater];
oceanLabel.text = [placemarks[0] ocean];
答案 1 :(得分:1)
是的,你可以。
但你这样做有点错误。首先,placemarks
是一个数组,而不是一个字符串。这就是locationLabel.text = placemarks
发出警告的原因。
Placemarks
是CLPlacemarks的数组。这是因为地理编码器可以返回坐标的多个结果。在最简单的条件下,它的第一项应该没问题。
CLPlacemark
的属性addressDictionary
包含此位置的数据。
您可以使用ABPerson头文件定义的地址属性constans访问此数据。
例如:
从阵列中获取第一个地标:
CLPlacemark *place = [placemarks objectAtIndex:0];
然后从这个地标获取城市:
NSString *cityName = [place objectForKey: kABPersonAddressCityKey];
不要忘记导入AVPerson标题!