2014-03-26 2 views
1

웹 서비스 및 지오 코딩을 통해 위도와 경도 목록을 수신하면 전체 주소를 가져옵니다. 문제는 시간이 지나면 null이되고 지오 코더가 작동을 멈추는 것입니다! 누군가 나를 도울 수 있습니까?지오 코더는 잠시 후 null을 반환합니다.

-(void)getAddressArray:(void (^)(id response))completion{ 
for (int i=0; i<[favoritos count]; i++) { 

    double latitude = [[[favoritos valueForKey:@"latitude"] objectAtIndex:i] doubleValue]; 
    double longitude = [[[favoritos valueForKey:@"longitude"] objectAtIndex:i] doubleValue]; 
    CLLocationCoordinate2D location = CLLocationCoordinate2DMake(latitude, longitude); 
    CLLocation * locationAtual = [[CLLocation alloc]initWithLatitude:location.latitude longitude:location.longitude]; 
    CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 

    [geocoder reverseGeocodeLocation:locationAtual completionHandler:^(NSArray *placemarks, NSError *error) { 
     NSDictionary *dicAddress; 

     CLPlacemark *place = [placemarks firstObject]; 

     if (placemarks) { 
      NSLog(@"%@",place.addressDictionary); 
      if ([place.addressDictionary valueForKey:@"Thoroughfare"] == [NSNull null] || ![place.addressDictionary valueForKey:@"Thoroughfare"]) { 
       dicAddress = @{@"id":[[favoritos objectAtIndex:i] valueForKey:@"id"],@"address":@"Endereço não encontrado!",@"complemento":[[favoritos objectAtIndex:i] valueForKey:@"references"],@"number":[[favoritos valueForKey:@"numero"] objectAtIndex:i],@"name":[[favoritos valueForKey:@"name"] objectAtIndex:i], @"latitude":[[favoritos valueForKey:@"latitude"] objectAtIndex:i], @"longitude":[[favoritos valueForKey:@"longitude"] objectAtIndex:i]}; 
      } 


      [address addObject:dicAddress]; 

      if ([address count] == [favoritos count]) 
       completion(address); 
     }  
}]; 
} 

감사 :

는 여기에 내가 주소를 얻기 위해 사용하고 코드입니다!

답변

1

블록으로 전달 된 오류를 확인하십시오. 아마도 많은 요청을 보내고 있으며 속도 제한에 도달했을 것입니다.

는 속도 제한 각 앱 때문에 시간의 짧은 기간에 너무 많은 요청을 실패 에 요청의 일부 발생할 수 있습니다 reverseGeocodeLocation:completionHandler:

지오 코딩 요청에 대한 속도 제한이 있습니다. 최대 속도를 초과하면 지오 코더는 완료 핸들러에 kCLErrorNetwork 값을 갖는 오브젝트를 전달합니다.

+1

감사합니다.이 속도에 대해 알지 못했습니다. –

관련 문제