2012-03-02 5 views
12

を返します。私は多くのことを検索しただけでエラーがここに0または1ではない9.CLGeocoder reverseGeocodeLocationは、私はこの記事によるます逆ジオコーディングでiOSアプリを開発しています「kCLErrorDomainエラー9」

viewDidLoadで私のコードですがあります。

self.locationManager = [[CLLocationManager alloc]init]; 
self.locationManager.delegate = self; 
self.locationManager.distanceFilter = 80.0; 
[self.locationManager startUpdatingLocation]; 

CLGeocoder *geocoder = [[[CLGeocoder alloc] init] autorelease]; 
[geocoder reverseGeocodeLocation:self.locationManager.location 
    completionHandler:^(NSArray *placemarks, NSError *error) { 
     NSLog(@"reverseGeocodeLocation:completionHandler: Completion Handler called!"); 

     if (error){ 
      NSLog(@"Geocode failed with error: %@", error);    
      return; 

     } 

     if(placemarks && placemarks.count > 0) 

     { 
      //do something 
      CLPlacemark *topResult = [placemarks objectAtIndex:0]; 
      NSString *addressTxt = [NSString stringWithFormat:@"%@ %@,%@ %@", 
            [topResult subThoroughfare],[topResult thoroughfare], 
            [topResult locality], [topResult administrativeArea]]; 
      NSLog(@"%@",addressTxt); 
     } 
    }]; 

はどうもありがとうございました。

+0

私のコードに何もしていない間、シミュレータはエラー8を返します。 – goofansu

+1

CLLocationManager、CLGeocoderシミュレータで動作しません。デバイス上のデバッグ時またはデバイス上のテスト時にのみ結果が表示されます。シミュレータにエラーが表示されます。 –

+0

これは私のiPhone 4デバイスの魅力のように機能します。ありがとう! – gstroup

答えて

16

コアロケーションのエラーコードはdocumented hereです。

コードは、8値9、および10は、次のとおり示されているコードに基づいて

kCLErrorGeocodeFoundNoResult, 
kCLErrorGeocodeFoundPartialResult, 
kCLErrorGeocodeCanceled 

、あなたがエラー8取得したい最も可能性が高い理由は、ただちにれるstartUpdatingLocationを呼び出した後locationを使用するようにしようとしているということです時間はまだnilかもしれません。

これは通常、現在位置を取得するのに数秒かかり、それが最も可能性が高い(ジオコードエラー8またはkCLErrorGeocodeFoundNoResultになる)、それまでnilになります。私はエラーコード9が "FoundPartialResult"によって何を意味するのかは分かりませんが、AppleのGeocoderDemoサンプルアプリケーションは両方とも同じ方法( "結果なし")として扱います。

ジオコーディングコード(startUpdatingLocationコールの後のすべてのコード)をデリゲートメソッドlocationManager:didUpdateToLocation:fromLocation:に移動してみてください。ロケーションマネージャは、実際にロケーションがある場合にそのデリゲートメソッドを呼び出し、locationを使用しても安全です。

ジオコーディングが成功した後に、stopUpdatingLocationを呼び出すと、ユーザーの場所が更新されるたびにジオコーディングが試行されます。

受信した場所の精度(newLocation.horizontalAccuracy)と年齢(newLocation.timestamp)を確認してから、ジオコードすることもできます。

+0

ありがとうございます。私のコードをあなたのアドバイスに従って移動した後、CCLocationを 'CLLocation * location = [[CLLocation alloc] initWithLatitude:37.78583400経度:-122.40641700];に設定しても、エラー9が表示されます。多分、シミュレータに何らかのエラーがあり、私は自分のデバイスでそれをテストするつもりです。 – goofansu

1

場所を作成するときに私は長さと緯度が混ざり合っていることが判明しました。私はこれを人々が確認するためのものとして追加すると思った。

関連する問題