애플 맵 테스트할 때 같이 테스트해본 자료
애플 맵 테스트는 이쪽
2015/04/08 - [프로그래밍/iOS] - [ios] 주소->위, 경도로 위,경도 ->주소로
1. 주소를 위도, 경도로
NSString* string = @"검색 할 주소;
//주소를 url로 변환
NSString* rawURL = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?address=%@&sensor=true",string];
NSString* encodingString = [rawURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL* url = [NSURL URLWithString:encodingString];
//요청
NSURLRequest* request = [NSURLRequest requestWithURL:url];
NSData* response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//json parser
NSError* jsonParsingError = nil;
NSMutableDictionary* receiveArray = [NSJSONSerialization JSONObjectWithData:response options: NSJSONReadingMutableContainers error:&jsonParsingError];
//parser error
if (jsonParsingError)
{
NSLog(@"error : %@",jsonParsingError);
}
else
{
//결과값 가져오기
NSArray *result = receiveArray[@"results"];
if ([result count]== 0) //결과값이 없을 때
{
NSLog(@"result = nil");
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"검색 실패" message:@"해당 지역을 검색할 수 없습니다." delegate:nil cancelButtonTitle:@"확인" otherButtonTitles:nil, nil];
[alert show];
return ;
}
NSMutableDictionary *resultFirst = [result objectAtIndex:0]; //첫번째 결과가 가장 검색어에 근접함
NSString* address = resultFirst[@"formatted_address"]; //주소
NSDictionary* geometry = resultFirst[@"geometry"]; //위경도를 가지고 있는 geometry쪽 정보 가져오기
NSDictionary* location = geometry[@"location"]; // geometry안의 location 정보 가져오기 위 경도 값을 가지고 있음
float lat, lng;
lat = [location[@"lat"] floatValue]; //위도
lng = [location[@"lng"] floatValue]; //경도
//지도에 해당위치 marker로 표시 후 확대
GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = CLLocationCoordinate2DMake(lat, lng);
marker.title = searchBar.text;
marker.snippet = address;
marker.map = mapView_;
[mapView_ setCamera:[GMSCameraPosition cameraWithLatitude:lat longitude:lng zoom:15]];
}
빨간색으로 설정한 부분이 주소가 들어갈 곳 NSString을 넣어도 된다.
파란색으로 설정한 부분이 결과 위, 경도
2. 위도, 경도를 주소로
GMSGeocoder* geocoder = [[GMSGeocoder alloc] init];
float lat = -33.86;
float lng = 151.20;
[geocoder reverseGeocodeCoordinate:CLLocationCoordinate2DMake(lat, lng) completionHandler:^(GMSReverseGeocodeResponse *placeMarks, NSError *error) {
if (!error)
{
GMSAddress* result = [placeMarks firstResult]; //첫번째 결과값
NSMutableString* address = [[NSMutableString alloc] init]; //주소가 들어갈 string
for (NSString* string in result.lines) //주소 정보를 받아오기
{
[address appendString:string]; //주소정보를 address에 붙이기
}
//지도에 표시
GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = CLLocationCoordinate2DMake(lat, lng);
marker.title = [NSString stringWithFormat:@"%f, %f",lat,lng];
marker.snippet = address;
marker.map = mapView_;
[mapView_ setCamera: [GMSCameraPosition cameraWithLatitude:lat longitude:lng zoom:15]];
}
else
{
NSLog(@"error : %@",[error description]);
}
}];
빨간색으로 표시한 부분이 각각 위도, 경도가 들어가는 위치
파란색으로 표시한 부분이 주소를 NSString으로 저장하는 방법이다.
'프로그래밍 > iOS' 카테고리의 다른 글
[ios] opencv Canny 사용 (0) | 2015.04.09 |
---|---|
[ios] 네이버 맵 테스트 주소->위,경도/ 위경도->주소 (0) | 2015.04.09 |
[ios] Delegate사용 법 (0) | 2015.04.08 |
[ios] 기기의 가로, 세로 사이즈 가져오기(ios8 수정) (0) | 2015.04.08 |
[ios] UIImage를 jpg파일이나 raw파일로 저장하는 법 (0) | 2015.04.08 |