CLGeocoder и обратная совместимость - PullRequest
6 голосов
/ 18 октября 2011

У меня простой вопрос.

MKReverseCoder устарел и не работает с iOS 5 .Мы должны использовать CLGeocoder.Но есть много людей под iOS4 .Как новые приложения могут работать с iOS4 и iOS5 для геокодирования?

Спасибо!

Ответы [ 3 ]

8 голосов
/ 05 декабря 2011

Если кто-то пытается перейти на CLGeocoder из MKReverseGeocoder, то я написал сообщение в блоге, которое может помочь http://jonathanfield.me/jons-blog/clgeocoder-example.html

В основном, например, после того, как вы создали объекты locationManager и CLGeocoder, просто добавьте этот код в viewDidLoad() и затем создайте несколько меток или текстовых областей для отображения данных.

[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;

}];
4 голосов
/ 18 октября 2011

MKReverseGeocoder по-прежнему работает с iOS5. Это просто устарело, что означает, что оно будет удалено позже (например, при выпуске чего-то вроде iOS6). Таким образом, вы можете продолжать использовать его сейчас без каких-либо проблем

1 голос
/ 17 июля 2012
- (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];

     }];

Подробнее см. свойство CLPlacemark

...