0

を使用して2つの都市の座標を取得できましたGLGeocoder geocodeAddressString

この 2 つの都市の座標を名前から取得したので、それらの間の距離を計算したいと思います。CLLocationDistanceただし、 が の前に実行されるという問題に直面していgeocodeAddressStringます。

都市の場所が取得された後にのみ距離が計算されるようにするにはどうすればよいですか?

以下の私のコードを見てください:

__block CLLocation *depLocation;
__block CLLocation *arrLocation;

CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:@"Birmingham" completionHandler:^(NSArray* placemarks, NSError* error){
    for (CLPlacemark* aPlacemark in placemarks)
    {

        depLocation = [[CLLocation alloc]
                       initWithLatitude:aPlacemark.location.coordinate.latitude
                       longitude:aPlacemark.location.coordinate.longitude];

    }
}];

CLGeocoder *geocoder2 = [[CLGeocoder alloc] init];
[geocoder2 geocodeAddressString:@"Amritsar" completionHandler:^(NSArray* placemarks2, NSError* error){
    for (CLPlacemark* aPlacemark2 in placemarks2)
    {

        arrLocation = [[CLLocation alloc]
                       initWithLatitude:aPlacemark2.location.coordinate.latitude
                       longitude:aPlacemark2.location.coordinate.longitude];

    }
}];

CLLocationDistance distanceXYZ = [depLocation distanceFromLocation:arrLocation];
NSString *distanceLabel = [NSString stringWithFormat:@"Distance to point %4.0f m.", distanceXYZ];
4

1 に答える 1

1

簡単な答えは、すべての完了ブロックをネストすることです。すべてのgeoCoder2ものをコピーしてgeocoder完了ブロックに入れてから、コピーして完了ブロックdistanceXYZdistanceLabel入れますgeocoder2

于 2014-01-16T17:04:25.327 に答える