2012-03-30 5 views
0

안녕하세요. 위치의 위도와 경도 값을 얻는 방법은 무엇입니까? 아래 코드를 사용하려고하는데 잘못된 응답이 나옵니다. 문제를 해결하려면 도움이 필요합니다. 56 : 위도와 경도를 가져 오는 코드를 구현하는 방법은 무엇입니까?

2012-03-29 23

- (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address 
{ 
NSString *city,*state,*zip; 

[email protected]"Hyderabad"; 

[email protected]"Andrapradesh"; 

[email protected]"22345"; 

address=city,state,zip; 

NSLog(@"##########%@",address); 

double latitude = 0, longitude = 0; 

NSString *esc_addr = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

NSString *req = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr]; 

NSString *result = [NSString stringWithContentsOfURL:[NSURL URLWithString:req] encoding:NSUTF8StringEncoding error:NULL]; 

NSLog(@"333333%@",result); 

if (result) { 
NSScanner *scanner = [NSScanner scannerWithString:result]; 

NSLog(@"##########%@",scanner); 

if ([scanner scanUpToString:@"\"lat\":" intoString:nil] && [scanner scanString:@"\"lat\":" intoString:nil]) { 
[scanner scanDouble:&latitude]; 

NSLog(@"4444444%@",scanner); 

NSLog(@"5555%@",latitude); 

if ([scanner scanUpToString:@"\"lng\":" intoString:nil] && [scanner scanString:@"\"lng\":" intoString:nil]) { 
[scanner scanDouble:&longitude]; 

NSLog(@"6666%@",scanner); 

NSLog(@"7777%@",longitude); 

} 

} 

} 

CLLocationCoordinate2D center; 

center.latitude = latitude; 

NSLog(@"##########%@",latitude); 

center.longitude = longitude; 

return center; 

} 




333333 { 

"results" : [ 

{ 

"address_components" : [ 

{ 

"long_name" : "Hyderabad", 

"short_name" : "Hyderabad", 

"types" : [ "locality", "political" ] 

}, 

{ 

"long_name" : "Ranga Reddy", 

"short_name" : "R.R. District", 

"types" : [ "administrative_area_level_2", "political" ] 

}, 

{ 

"long_name" : "Andhra Pradesh", 

"short_name" : "Andhra Pradesh", 

"types" : [ "administrative_area_level_1", "political" ] 

}, 

{ 

"long_name" : "India", 

"short_name" : "IN", 

"types" : [ "country", "political" ] 

} 

], 

"formatted_address" : "Hyderabad, Andhra Pradesh, India", 

"geometry" : { 

"bounds" : { 

"northeast" : { 

"lat" : 17.57944810, 

"lng" : 78.69135810 

}, 

"southwest" : { 

"lat" : 17.23837080, 

"lng" : 78.24014110 

} 

}, 

"location" : { 

"lat" : 17.3850440, 

"lng" : 78.4866710 

}, 

"location_type" : "APPROXIMATE", 

"viewport" : { 

"northeast" : { 

"lat" : 17.55533690, 

"lng" : 78.74278980 

}, 

"southwest" : { 

"lat" : 17.21459250, 

"lng" : 78.23055219999999 

} 

} 

}, 

"types" : [ "locality", "political" ] 

} 

], 

"status" : "OK" 

} 
56 : ####

2012-03-29 23 : 670 (11603)]

SVGeocoder 58.578 [670 : 11603 58.577 SVGeocoder ] ########## (널)

+0

:'추가 ress = city, state, zip;'? 유효한 목표조차도 아닙니다. c. 이 컴파일합니까? – jrturton

+0

정확히 무엇을 요구하고 있는지, 이것은 명확하지 않습니다. 응답을 나열하고 있습니다, 이것이 당신이 얻고있는 것입니까? 너의 문제는 무엇인가? – jrturton

+0

그 응답을 받고 있지만 숫자 값 (위도와 경도)을 추출하고 싶습니다 –

답변

2

이 시도 :

일을 할 생각이 라인은 무엇
- (CLLocationCoordinate2D) geoCodeUsingAddress: (NSString *) address 
{ 
    CLLocationCoordinate2D myLocation; 

    NSString *esc_addr = [address stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; 

    NSString *req = [NSString stringWithFormat: @"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr]; 

    NSDictionary *googleResponse = [[NSString stringWithContentsOfURL: [NSURL URLWithString: req] encoding: NSUTF8StringEncoding error: NULL] JSONValue]; 

    NSDictionary *resultsDict = [googleResponse valueForKey: @"results"]; 
    NSDictionary *geometryDict = [resultsDict valueForKey: @"geometry"];  
    NSDictionary *locationDict = [geometryDict valueForKey: @"location"];  
    NSArray *latArray = [locationDict valueForKey: @"lat"]; NSString *latString = [latArray lastObject]; 
    NSArray *lngArray = [locationDict valueForKey: @"lng"]; NSString *lngString = [lngArray lastObject];  

    myLocation.latitude = [latString doubleValue];  
    myLocation.longitude = [lngString doubleValue]; 

    LogInfo(@"lat: %f\tlon:%f", myLocation.latitude, myLocation.longitude); 
    return myLocation; 
} 
+2

JSONValue는 무엇입니까? – Dejell

관련 문제