Устаревшие методы CLRegion - как получить радиус?

Я использую geocodeAddressString:completionHandler: метод, который возвращает массив CLPlacemarks. Я должен получить широту, долготу, мнемоническое имя и радиус. Пока получить первые 3 легко:

double lat = placemark.location.coordinate.latitude;
double lng = placemark.location.coordinate.longitude;
NSString *name = [NSString stringWithFormat:@"%@", ABCreateStringWithAddressDictionary(placemark.addressDictionary, NO)]

Я не знаю, как получить радиус сейчас, так как placemark.region.radius устарела. Есть идеи, что использовать вместо этого сейчас? Я не могу найти ничего интересного в документации.

1 ответ

Решение

Примечание амортизации для radius в CLRegion и он говорит, чтобы использовать CLCircularRegion вместо.

Обратите внимание, что CLCircularRegion это подкласс CLRegion,
CLCircularRegion имеет те же свойства, что CLRegion имел (в том числе radius).

Это важно, если вы тот, кто создает CLRegion с намерением использовать его radius имущество.


Тем не менее, здесь, это сам SDK (в частности, geocodeAddressString метод), который должен беспокоиться об этом и справиться с этим.

В iOS 7 этот метод действительно обрабатывает это, возвращая CLCircularRegion для метки region имущество.

По сути, вам не нужно ничего делать или изменять здесь, поскольку имена свойств идентичны.

Этот код будет работать с iOS 4 до iOS 7:

NSLog(@"radius=%f", placemark.region.radius);
Другие вопросы по тегам