2012-04-13 48 views
1

我需要地理編碼兩個不同的地址,但我需要在相同的範圍/方法內的結果。我怎樣才能將相同變量location1location2指向同一個塊內。 這裏是我當前的代碼...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

我發現瞭如何做到這一點。對於每個地理編碼塊,我指向一個具有特定參數的方法。很簡單,只需要使用邏輯!