[전환 아이폰] 경위도 좌표에 따라 상세한 주소(국, 성, 시, 거리, 번호 포함)를 취한다.


현재 휴대전화 주소를 얻고 경위도에서 상세한 주소로 전환한다(국가명-국가코드, 성, 거리명, 우편대코드 등 포함).
1:현재 핸드폰 경위도 획득
 
@implementation CurrentLocation

@synthesize locationManager;
@synthesize target,callBack;

#pragma mark --
#pragma mark Public
-(void) startUpdatingLocation{
	[[self locationManager] startUpdatingLocation];
}
#pragma mark --
#pragma mark Memory management
-(void) dealloc{
	[super dealloc];
	[locationManager release];
}
#pragma mark --
#pragma mark Location manager
/*
 Return a location manager -- create one if necessary.
 */
- (CLLocationManager *)locationManager {
    if (locationManager != nil) {return locationManager;}
    locationManager = [[CLLocationManager alloc] init];
    [locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
    [locationManager setDelegate:self];
    return locationManager;
}
#pragma mark --
#pragma mark CLLocationManagerDelegate methods
/*
 Conditionally enable the Add button:
 If the location manager is generating updates, then enable the button;
 If the location manager is failing, then disable the button.
 */
- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation {
	NSLog(@"      !");
}
- (void)locationManager:(CLLocationManager *)manager
       didFailWithError:(NSError *)error {
        NSLog(@"    !");
 }
@end

 
2: 현재 휴대전화의 경위도에 대한 상세한 주소 얻기
 
@implementation AddressReverseGeoder

#pragma mark --
#pragma mark Public
//               
- (void)startedReverseGeoderWithLatitude:(double)latitude longitude:(double)longitude{
	CLLocationCoordinate2D coordinate2D;
	coordinate2D.longitude = longitude;
	coordinate2D.latitude = latitude;
	//
	MKReverseGeocoder *geoCoder = [[MKReverseGeocoder alloc] initWithCoordinate:coordinate2D];
	geoCoder.delegate = self;
	[geoCoder start];
}
#pragma mark --
#pragma mark MKReverseGeocoderDelegate methods
//      
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark {
	NSString *address = [NSString stringWithFormat:@"%@ %@ %@ %@ %@%@", 
									  placemark.country,
									  placemark.administrativeArea,
									  placemark.locality,
									  placemark.subLocality,
									  placemark.thoroughfare,
									  placemark.subThoroughfare];
	NSLog(@"         :%@", address);
	geocoder = nil;
}
//    
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error {
	NSLog(@"error %@" , error);
}
#pragma mark --
#pragma mark Memory management
- (void)dealloc {
    [super dealloc];
}
@end

@property (nonatomic, readonly) NSDictionary *addressDictionary;//주소 사전 @property(nonatomic,readonly) NSString*thoroughfare;//거리 이름-'코윈로'@property(nonatomic,readonly) NSString*subThoroughfare;//문패 번호 -'18번'@property(nonatomic,readonly) NSString*locality;//도시-광저우시@property(nonatomic,readonly)NSString*subLocality;//구 현-'천하구'@property(nonatomic,readonly) NSString*administrative Area;//ID - "광둥성"@property(nonatomic,readonly) NSString*subAdministrative Area;//가져오지 못했습니다. 뭔지 모르겠습니다. @property (nonatomic,readonly) NSString * postalCode;//우편번호 - 무슨 이유인지 모르겠지만 @property(nonatomic,readonly) NSString*country;//국가 - "중국"@property(nonatomic,readonly) NSString*countryCode;//국가 코드 - "CN"
 

좋은 웹페이지 즐겨찾기