2013-05-20 2 views
1

현재 iPad 용 응용 프로그램을 만들고 있는데 어느 시점에이 도시 옆에 도시 목록이 사용자의 현재 위치와 거리가 표시되어야합니다.지오 코딩을 반복 할 수 없습니까?

이전에 작성한 데이터베이스를 사용하는 루프를 사용하고 있습니다. 이것은 코드입니다 :

NSString *address = [NSString stringWithFormat:@"%@, Nederland", [info2 objectForKey:@"stadsnaam"]]; 
    [self.geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) { 
     CLPlacemark *placemark = [placemarks objectAtIndex:0]; 
     CLLocation *location = placemark.location; 
     CLLocationCoordinate2D firstLocation = location.coordinate; 
     NSLog(@"%f,%f", firstLocation.latitude, firstLocation.longitude); 
    }]; 

이 코드는 for 루프 내에 있습니다. 하지만 처음 실행하면 0.0000

루프가 활성화되고 두 번 이상 실행됩니다. 현재 위치와 첫 번째 도시 사이의 거리 만 반환합니다.

응용 프로그램은이 코드 조각에서 도시 이름을 가져옵니다

[NSString stringWithFormat:@"%@, Nederland", [info2 objectForKey:@"stadsnaam"]] 나는 확인하고 작동한다. Google API를 사용하는 것을 피하고 싶습니다. 하루에 최대 요청 수를 초과하게 될 것이므로 XD

아무 도움이 없으므로 미리 알려 주시면 감사하겠습니다.

+0

블록 안에 무엇인가 오류가 있습니까? – geowar

+0

firstLocation = placemarks [0] .location.coordinate; – geowar

답변

2

당신은 -geocodeAddressString:completionHandler:에 대한 the documentation을 읽을 필요가 :

전방 지오 코딩 요청을 시작하면, 다른 포워드를 시작하거나 역 지오 코딩 요청을하지 마십시오.

CLGeocoder의 geocoding 속성을 사용하여 지오 코딩 작업이 진행 중인지 여부를 확인할 수 있습니다.

+0

나는 이것에 대해 모두 잘못되었을 수도 있습니다. 그러나 동일한 앱의 초기 단계에서 사용자가 단순히 자신의 고향을 입력 할 수있는 위치를 검색했습니다. 그것은 여러 번 작동합니다. 이 점이 다른 점은 무엇입니까? –

+1

@ChrisvanSchayk 타이밍. 만들려는 루프는 현지 이름을 입력하고 버튼을 누르는 것보다 훨씬 빠르게 지오 코딩 작업을 시도합니다. 지오 코더가 다음 요청이 제출되기 전에 완료 되었기 때문에 이전 앱이 작동했을 수 있습니다. – Caleb

+1

의미가 있습니다 ... 감사합니다 @ 캐 일브! –

관련 문제