6 Stimmen

CLGeocoder und Abwärtskompatibilität

Ich habe eine einfache Frage.

MKReverseCoder ist veraltet und funktioniert nicht mehr, seit iOS 5 . Wir müssen die CLGeocoder . Aber es gibt eine Menge Leute, die unter iOS4 . Wie die neuen Anwendungen mit folgenden Komponenten arbeiten können iOS4 und iOS5 für die Geokodierung ?

Danke!

8voto

Jonathan Field Punkte 263

Wenn jemand versucht, von MKReverseGeocoder auf CLGeocoder umzusteigen, habe ich einen Blogbeitrag geschrieben, der vielleicht hilfreich ist http://jonathanfield.me/jons-blog/clgeocoder-example.html

Ein Beispiel: Nachdem Sie die Objekte locationManager und CLGeocoder erstellt haben, fügen Sie den folgenden Code zu Ihrem viewDidLoad() und erstellen Sie dann einige Beschriftungen oder Textbereiche, um die Daten anzuzeigen.

[super viewDidLoad]; locationManager.delegate = self; [locationManager startUpdatingLocation];

locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
[self.CLGeocoder reverseGeocodeLocation: locationManager.location completionHandler: 
 ^(NSArray *placemarks, NSError *error) {

     CLPlacemark *placemark = [placemarks objectAtIndex:0];

         isoCountryCode.text = placemark.ISOcountryCode;
         country.text = placemark.country;
         postalCode.text= placemark.postalCode;
         adminArea.text=placemark.administrativeArea;
         subAdminArea.text=placemark.subAdministrativeArea;
         locality.text=placemark.locality;
         subLocality.text=placemark.subLocality;
         thoroughfare.text=placemark.thoroughfare;
         subThoroughfare.text=placemark.subThoroughfare;
         //region.text=placemark.region;

}];

4voto

justin Punkte 5801

MKReverseGeocoder funktioniert auch unter iOS5. Es ist nur veraltet, was bedeutet, dass es zu einem späteren Zeitpunkt entfernt werden (wie bei der Veröffentlichung von etwas wie iOS6). Sie können es also weiterhin ohne Probleme verwenden

1voto

krishnendra Punkte 603
- (IBAction)geoCodeLocation:(id)sender{
    [self.geoCoder reverseGeocodeLocation: locationManager.location completionHandler: 
     ^(NSArray *placemarks, NSError *error) {
         CLPlacemark *placemark = [placemarks objectAtIndex:0];
         NSLog(@"placemark %@",placemark);
         //String to hold address
         NSString *locatedAt = [[placemark.addressDictionary valueForKey:@"FormattedAddressLines"] componentsJoinedByString:@", "];
         NSLog(@"addressDictionary %@", placemark.addressDictionary);

         NSLog(@"placemark %@",placemark.region);
         NSLog(@"placemark %@",placemark.country);  // Give Country Name 
         NSLog(@"placemark %@",placemark.locality); // Extract the city name 
         NSLog(@"location %@",placemark.name);
         NSLog(@"location %@",placemark.ocean);
         NSLog(@"location %@",placemark.postalCode);
         NSLog(@"location %@",placemark.subLocality);

         NSLog(@"location %@",placemark.location);
          //Print the location to console
         NSLog(@"I am currently at %@",locatedAt);

         //Set the label text to current location
         [locationLabel setText:locatedAt];

     }];

Mehr dazu unter Eigenschaft von CLPlacemark

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X