2013-04-30 5 views
0

NSStrings 배열을 lat/long coordinates("99.999999","99.999999")으로 파싱 한 다음 으로 변환하려고합니다.MKOverlay에서 사용할 유효한 CLLocation의 NSArray에 형식 ("99.9999", "99.9999")이있는 위도/경도 좌표의 NSArray를 변환하는 방법은 무엇입니까?

여기에 도움이 될 NSString 방법이 있습니까?

외부 REST API에서이 좌표를 가져온 다음 JSON을 사전으로 변환 한 다음 배열로 변환하면 그 부분이 고정되어 있습니다.

아이디어가 있으십니까?

감사합니다.

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{ 

NSLog(@"connectionDidFinishLoading"); 
NSLog(@"Succeeded! Received %d bytes of data",[self.responseData length]); 


NSError *myError = nil; 
NSDictionary *jsonResult = [NSJSONSerialization JSONObjectWithData:self.responseData options:NSJSONReadingMutableLeaves error:&myError]; 

// Show ALL values coming out of NSJSONSerialization 
for(id key in jsonResult) { 

    id value = [jsonResult objectForKey:key]; 

    NSString *keyAsString = (NSString *)key; 
    NSString *valueAsString = (NSString *)value; 

    NSLog(@"key: %@", keyAsString); 
    NSLog(@"value: %@", valueAsString); 
} 

    NSArray *jsonCoordinates =[jsonResult objectForKey:@"latlng"]; 


for (id key in jsonCoordinates) { 

    //id value = [jsonCoordinates objectForKey:key]; 

    NSString *keyAsString = (NSString *)key; 
    //NSString *valueAsString = (NSString *)value; 

    NSLog(@"key: %@", keyAsString); 
    //NSLog(@"value: %@", valueAsString); 
} 


} 

로그 출력 :

2013년 4월 29일 22 : 23 : 44.894 RideInfo [9271 : C07] 키 ( "37.473497" "-122.213878" ) 2013-04- 29 22 : 23 : 44.894 RideInfo [9271 : C07] 키 : ( "37.47346" "-122.213538" )

+0

문자열'("99.999", "99.999")가 이미 가지고있는 NSArray에 대한 설명이 아니 었습니까? 만약 내가 의심 스럽다면'CLLocationCoordinate2D coord = {[array [0] doubleValue], [array [1] doubleValue]}; ' –

+0

내 게시물을 NSLog 출력의 몇 줄로 업데이트했다. 배열은 위도/경도 좌표 집합에 해당합니다. 각 쌍을 거쳐 CLLocation으로 전환해야합니다. – marlex

+0

답변을 추가했습니다. 그런데 왜 값이 문자열이라고 가정합니까? 아마 그들은 그렇지 않습니다. –

답변

0

값은 (당신이 그들이 생각하는 이유가 이해하지 못하는) 문자열이 아닌. 그들은 NSArray 개체입니다. 이 배열에는 NSNumber 또는 NSString 개체가 포함되어 있기 때문에 (실제 JSON을 보지 않고 어느 개체를 표시할지 알 수 없음) 이라는 값을 나타내는 doubleValue 메시지에 응답합니다. CLLocation 개체의 초기화에 적합합니다. : 여기서

locs
NSMutableArray *locs = [NSMutableArray array]; 

for (NSString *key in jsonResult) { 
    NSArray *pair = jsonResult[key]; 
    double lat = [pair[0] doubleValue]; 
    double lon = [pair[1] doubleValue]; 
    CLLocation *loc = [[CLLocation alloc] initWithLatitude:lat longitude:lon]; 
    [locs addObject:loc]; 
    // if non-ARC: 
    [loc release]; 
} 

CLLocation 오브젝트의 배열을 포함 할 것이다.

+0

당신의 대답에 따라 나는 그것을 작동시킬 수 있었지만 약간의 조정을해야했습니다 : NSArray * jsonCoordinates = [jsonResult objectForKey : @ "latlng"]; NSMutableArray * routeCoords = [[NSMutableArray alloc] init]; (id 인덱스 in jsonCoordinates) { // NSArray * pair = [jsonCoordinates objectAtIndex : index]; double lat = [인덱스 [0] doubleValue]; 이중 lon = [인덱스 [1] doubleValue]; CLLocation * loc = [[CLLocation 할당] initWithLatitude : 위도 경도 : lon]; [routeCoords addObject : loc]; } – marlex