2014-01-09 3 views
9

Ich verwende die geocodeAddressString:completionHandler: Methode, die ein Array von CLPlacemarks zurückgibt. Ich muss Breitengrad, Längengrad, mnemotechnischen Namen und Radius erhalten. Während die ersten drei bekommen ist einfach:Veraltete CLRegion-Methoden - wie erhält man den Radius?

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

Ich weiß nicht, wie der Radius jetzt bekommen, da placemark.region.radius veraltet. Irgendwelche Ideen was nun zu verwenden ist? Ich kann in der Dokumentation nichts Interessantes finden.

+0

Neue Klasse genannt CLCircularRegion:

Dieser Code wird 7 von iOS 4 auf iOS arbeiten. https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLRegion_class/DeprecationAppendix/AppendixADreprecedAPI.html#//apple_ref/occ/instp/CLRegion/radius – danh

+0

@danh Wie sollte ich von der alten Region wann migrieren Ich nehme es nicht an? Casting wird eher nicht helfen und es gibt keine Methode, um alte Region in neue CircularRegion umzuwandeln. – Vive

Antwort

8

Der Verfall Hinweis ist für radius in CLRegion und es heißt stattdessen CLCircularRegion zu verwenden.

Beachten Sie, dass CLCircularRegion eine Unterklasse von CLRegion ist.
CLCircularRegion hat die gleichen Eigenschaften, die CLRegion hatte (einschließlich radius).

Dies ist wichtig, wenn Sie die eine CLRegion erstellen mit der Absicht, seine radius Eigenschaft zu verwenden.


Allerdings ist es hier das SDK selbst (speziell die geocodeAddressString Methode), die sich darum kümmern und damit umgehen muss.

In iOS 7 verarbeitet diese Methode in der Tat eine CLCircularRegion für die region Eigenschaft der Ortsmarke.

Im Wesentlichen müssen Sie hier nichts tun oder ändern, da die Eigenschaftsnamen identisch sind.

NSLog(@"radius=%f", placemark.region.radius); 
+4

Dann würde ich empfehlen zu verwenden: '[(CLCircularRegion *) placemark.Region Radius]' avod zusätzliche Warnung. Danke für die Antwort. – Vive

+1

Ja, leider, wenn das Deployment-Ziel 7.0 ist, gibt es diese Warnung. Wenn das Bereitstellungsziel unter 7.0 liegt, während das iOS 7 SDK weiterhin verwendet wird, gibt es keine Warnung. – Anna

Verwandte Themen