지도 사용을 위해 구글맵, 네이버맵, 다음맵 등을 사용해 보았지만.
위 3가지 맵들은 지오코드 혹은 역지오코드 사용시 횟수 제한이 있다.
아직 ios 애플맵이 완벽히 한국지도 적용이 되지는 않는것 같지만 좋아지길 바라면서
하는 방법을 적어본다.
1. 주소를 위도, 경도로
CLGeocoder* geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:_addressLabel.text completionHandler:^(NSArray *placemarks, NSError *error)
{
// NSLog(@"%@",[placemarks description]);
NSLog(@"plcaemarks count = %lu",(unsigned long)[placemarks count]);
if ([placemarks count] == 0) //검색결과가 아무것도 없을 때
{
NSLog(@"result = nil");
//경고창
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"검색 실패" message:@"해당 지역을 검색할 수 없습니다." delegate:nil cancelButtonTitle:@"확인" otherButtonTitles:nil, nil];
[alert show];
[_resultDic setObject:[NSNumber numberWithDouble:0.0] forKey:@"lat"] ;
[_resultDic setObject:[NSNumber numberWithDouble:0.0] forKey:@"lng"] ;
return ;
}
else
{
CLPlacemark* p = [placemarks objectAtIndex:0]; //첫번째 검색결과 사용
CLCircularRegion* region = (CLCircularRegion *)p.region;
}
}];
빨간색으로 설정한 부분이 주소가 들어갈 곳 NSString을 넣어도 된다.
파란색으로 설정한 곳이 위, 경도 좌표를 저장하는 클래스
위도(latitude) : region.center.latitude
경도(longitude) : region.center.longitude
위 경도 값은 double값이니 int로 저장하면 안된다.
2. 위도, 경도를 주소로
CLGeocoder* geocoder = [[CLGeocoder alloc] init];
CLLocation* loc = [[CLLocation alloc] initWithLatitude:region.center.latitude longitude:region.center.longitude];
[geocoder reverseGeocodeLocation:loc completionHandler:^(NSArray *placemarks, NSError *error) {
if ([placemarks count] == 0) //검색결과가 아무것도 없을 때
{
NSLog(@"result = nil");
//경고창
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"검색 실패" message:@"현재위치를 검색할 수 없습니다." delegate:nil cancelButtonTitle:@"확인" otherButtonTitles:nil, nil];
[alert show];
return ;
}
else
{
CLPlacemark* p = [placemarks objectAtIndex:0]; //첫번째 검색결과 사용
NSString* add = ABCreateStringWithAddressDictionary(p.addressDictionary, NO); //주소 dictionary 변환
add = [add stringByReplacingOccurrencesOfString:@"\n" withString:@" "]; //엔터를 스페이스로 변환(한줄표시 위해)
//핀 추가
MKPointAnnotation* annotation = [[MKPointAnnotation alloc] init];
annotation.coordinate = region.center;
annotation.title = @"내위치"; //검색어 출력
annotation.subtitle =add; //주소출력
[_mapView addAnnotation:annotation];
}
}];
빨간색으로 표시한 부분이 각각 위도, 경도가 들어가는 위치
파란색으로 표시한 부분이 주소를 NSString으로 저장하는 방법이다.
위를 사용하기 위해서는 AddressBookUI.framework를 추가한 뒤
#import <AddressBookUI/AddressBookUI.h> 를 추가해야한다.
'프로그래밍 > iOS' 카테고리의 다른 글
[ios] alert show에서 죽을때 (0) | 2015.04.08 |
---|---|
[ios] UIButton 글자 바꾸기 (0) | 2015.04.08 |
[ios] [__NSDictionaryI setObject:forKey:]: unrecognized selector sent to instance (0) | 2015.04.08 |
[ios] 시간 제한, 패키지 제한 걸기(타임락, 패키지 락) (0) | 2015.04.08 |
[ios] ios7에서 버튼에 외곽선 넣기 (0) | 2015.04.08 |