Placemark を取得しているこのコードを使用していますが、都市名は表示されません。以前は MKReverse Geocoder を使用して都市名を取得している目印を取得していましたが、Apple 開発者が CLLocation にすべてを追加したため、iOS 6 のように非推奨になっています。
だから私はこのコードを使用しました:
-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
CLLocation *location = [locationManager location];
NSLog(@"location is %@",location);
CLGeocoder *fgeo = [[[CLGeocoder alloc] init] autorelease];
// Reverse Geocode a CLLocation to a CLPlacemark
[fgeo reverseGeocodeLocation:location
completionHandler:^(NSArray *placemarks, NSError *error){
// Make sure the geocoder did not produce an error
// before continuing
if(!error){
// Iterate through all of the placemarks returned
// and output them to the console
for(CLPlacemark *placemark in placemarks){
NSLog(@"%@",[placemark description]);
city1= [placemark.addressDictionary objectForKey:(NSString*) kABPersonAddressCityKey];
NSLog(@"city is %@",city1);
}
}
else{
// Our geocoder had an error, output a message
// to the console
NSLog(@"There was a reverse geocoding error\n%@",
[error localizedDescription]);
}
}
];
}
ここでコンソールで見て NSLog(@"%@",[placemark description]);
いるように、次のような出力が得られます:- abc道路名、abc道路名、州名、国名。