もっと簡単な方法があります。逆GeocodeLocationを使用して場所の情報を取得できます。これがすべての都市の考えで機能するとは限らないことを知っておく必要があります。詳細については、AppleのCLGeocoderクラスリファレンスとジオコーディングロケーションデータのドキュメントを確認してください。
したがって、サービスを処理するオブジェクトを作成してオブジェクト化できます
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
@interface locationUtility : NSObject<CLLocationManagerDelegate>{
CLLocationManager *locationManager;
CLPlacemark *myPlacemark;
CLGeocoder * geoCoder;
}
@property (nonatomic,retain) CLLocationManager *locationManager;
@end
と実装
#import "locationUtility.h"
@implementation locationUtility
@synthesize locationManager;
#pragma mark - Init
-(id)init {
NSLog(@"locationUtility - init");
self=[super init];
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = kCLDistanceFilterNone;
[locationManager startMonitoringSignificantLocationChanges];
geoCoder= [[CLGeocoder alloc] init];
return self;
}
- (void) locationManager:(CLLocationManager *) manager didUpdateToLocation:(CLLocation *) newLocation
fromLocation:(CLLocation *) oldLocation {
[geoCoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *placemark = [placemarks objectAtIndex:0];
myPlacemark=placemark;
// Here you get the information you need
// placemark.country;
// placemark.administrativeArea;
// placemark.subAdministrativeArea;
// placemark.postalCode];
}];
}
-(void) locationManager:(CLLocationManager *) manager didFailWithError:(NSError *) error {
NSLog(@"locationManager didFailWithError: %@", error.description);
}
@end