2012-04-13 3 views
1

Мне нужно геокодировать два разных адреса, но мне нужно иметь результаты внутри одного и того же диапазона/метода. Как я могу направить те же переменные location1 и location2 внутри того же блока. Вот мой текущий код ...Несколько адресов CLGeocoder?

- (IBAction)calculateDistance { 
    [textFieldDestination resignFirstResponder]; 
    NSString *origin = [textFieldOrigin text]; 
    if (origin) { 
     CLGeocoder *geoCode = [[CLGeocoder alloc] init]; 

     [geoCode geocodeAddressString:origin completionHandler: ^(NSArray *placemarks, NSError *error) { 
      if (!error) { 
       CLPlacemark *place = [placemarks objectAtIndex:0]; 
       CLLocation *location = place.location; 
       CLLocation *location1 = [[CLLocation alloc] initWithLatitude:location.coordinate.latitude longitude:location.coordinate.longitude]; 
      } else { 
       NSString *string = [NSString stringWithFormat:@"%@ - also make sure you have inputted a valid city", [error localizedDescription]]; 
       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:string delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
       [alert show]; 
      } 
     }]; 
    } 

    NSString *destination = [textFieldDestination text]; 
    if (destination) { 
     CLGeocoder *geoCode2 = [[CLGeocoder alloc] init]; 

     [geoCode2 geocodeAddressString:destination completionHandler:^(NSArray *placemarks, NSError *error) { 
      if (!error) { 
       CLPlacemark *place = [placemarks objectAtIndex:0]; 
       CLLocation *location = place.location; 
       CLLocation *location2 = [[CLLocation alloc] initWithLatitude:location.coordinate.latitude longitude:location.coordinate.longitude]; 
      } else { 
       NSString *string = [NSString stringWithFormat:@"%@ - also make sure you have inputted a valid city", [error localizedDescription]]; 
       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:string delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
       [alert show]; 
      } 
     }]; 
    } 

    CLLocationDistance distanceM = [location1 distanceFromLocation:location2]; // obviously error so you can see that I need location1 and location2 in the same block.... but how!? 
    [metreDistance setText:[NSString stringWithFormat:@"%f", distanceM]]; 
} 

ответ

1

я узнал, как это сделать. Для каждого блока геокодирования я направил метод, который имел определенные параметры. Довольно просто, просто нужно использовать логику!

Смежные вопросы