2012-03-02 9 views
12

मैं रिवर्स जियोकोडिंग के साथ किसी iOS एप्लिकेशन फ़ीचर विकसित कर रहा हूँ इस लेख के अनुसार: geocoding tutorialCLGeocoder reverseGeocodeLocation रिटर्न 'kCLErrorDomain त्रुटि 9'

लेकिन जब मैं सिम्युलेटर पर इस तरह का परीक्षण, मैं 'kCLErrorDomain त्रुटि 9'। मैं एक बहुत खोज की है और वहाँ viewDidLoad में हैं केवल त्रुटि 0 या 1 नहीं 9.

यहाँ मेरी कोड है:

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

यह मेरे आईफोन 4 डिवाइस पर एक आकर्षण की तरह काम करता है। धन्यवाद! – gstroup

उत्तर

16

कोर स्थान त्रुटि कोड documented here हैं।

कोड 8 को महत्व देता है, 9, और 10 हैं:

kCLErrorGeocodeFoundNoResult, 
kCLErrorGeocodeFoundPartialResult, 
kCLErrorGeocodeCanceled 

दिखाए गए कोड के आधार पर, सबसे अधिक संभावना कारण आप त्रुटि 8 प्राप्त होता है कि यह location उपयोग करने के लिए कोशिश कर रहा है है तुरंत, जिस पर startUpdatingLocation बुला के बाद समय यह अभी भी nil हो सकता है।

वर्तमान स्थान प्राप्त करने में आमतौर पर कुछ सेकंड लगते हैं और यह तब तक nil होगा (जिसके परिणामस्वरूप geocode त्रुटि 8 या kCLErrorGeocodeFoundNoResult) होगा। मुझे यकीन नहीं है कि त्रुटि कोड 9 का अर्थ "FoundPartialResult" से है, लेकिन ऐप्पल के जियोकोडर डेमो नमूना ऐप दोनों तरह से व्यवहार करता है (जैसा कि "कोई परिणाम नहीं है")।

प्रतिनिधि विधि locationManager:didUpdateToLocation:fromLocation: पर geocoding कोड (startUpdatingLocation कॉल के बाद सभी कोड) को स्थानांतरित करने का प्रयास करें। स्थान प्रबंधक उस प्रतिनिधि विधि को कॉल करेगा जब वास्तव में यह स्थान होगा और केवल location का उपयोग करना सुरक्षित है।

वहां, geocoding सफल होने के बाद (या नहीं), आप stopUpdatingLocation पर कॉल करना चाहेंगे अन्यथा यह उपयोगकर्ता स्थान अपडेट होने पर हर बार जियोकोडिंग करने का प्रयास करेगा।

आप geocode करने की कोशिश करने से पहले प्राप्त स्थान के सटीकता (newLocation.horizontalAccuracy) और आयु (newLocation.timestamp) की जांच भी कर सकते हैं।

+0

में स्थान सिमुलेट कर रहे हैं धन्यवाद। मेरे कोड को आपकी सलाह के अनुसार ले जाने के बाद, यह त्रुटि 9 दिखाता है, भले ही मैं अपना सीसीएलोकेशन 'CLLocation * location = [[CLLocation alloc] initWithLatitude: 37.78583400 देशांतर: -122.40641700]; '। शायद सिम्युलेटर पर कुछ त्रुटि है, मैं इसे अपने डिवाइस पर परीक्षण करने जा रहा हूं। – goofansu

1

यह पता चला है कि मैंने स्थान बनाते समय लंबे समय तक अक्षांश और अक्षांश को मिश्रित किया। सोचा था कि मैं लोगों को जांचने के लिए कुछ जोड़ दूंगा।

संबंधित मुद्दे