„Nazwa” znaku CLPlacemark
Próbuję zrozumieć CLPlacemark i kiedy / jak tworzyć informacje dla objaśnień pinów dodanych do mapy. Przed tym, co przeczytałem kilka lat temu w artykule Więcej iOS 3, odwrócili oni geokodowany adres i zbudowali adres (ulica, zip, stan itd.). Po pierwsze, czy muszę sam zbudować ten ciąg? Próbowałem dowiedzieć się, jak uzyskać nazwę lokalizacji dla pewnych znanych rzeczy, takich jak wyszukiwanie sklepu Apple w poniższym kodzie:
NSString *address = @"1 stockton, san francisco, ca";
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) {
[placemarks enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"obj description: %@", [obj description]);
CLPlacemark *aPlacemark = (CLPlacemark *)obj;
NSLog(@"%@", [aPlacemark.addressDictionary description]);
NSLog(@"name: %@", ((CLPlacemark *)obj).name);
}];
];
Kiedy wydrukuję opis, widzę, że konsola mówi:
Apple Store, San Francisco, 1 Stockton St, San Francisco, CA 94108-5805, United States @ <+37.78584545,-122.40651752> +/- 100.00m, region (identifier <+37.78584545,-122.40652161> radius 18.96) <+37.78584545,-122.40652161> radius 18.96m
Skąd bierze się nazwa Apple Store w San Francisco? Myślałem, że będzie to właściwość CLPlacemark.name, ale to jest null. Próbując dowiedzieć się, jak tworzona jest właściwość name, znalazłem:
NSLog(@"%@", [aPlacemark.addressDictionary description]);
Dostaję dane wyjściowe:
City = "San Francisco";
Country = "United States";
CountryCode = US;
FormattedAddressLines = (
"Apple Store, San Francisco",
"1 Stockton St",
"San Francisco, CA 94108-5805",
"United States"
);
PostCodeExtension = 5805;
State = California;
Street = "1 Stockton St";
SubAdministrativeArea = "San Francisco";
SubLocality = "Union Square";
SubThoroughfare = 1;
Thoroughfare = "Stockton St";
ZIP = 94108;
Na tej podstawie widzę tylko, że w kluczu FormattedAddressLines adresu addressDictionary pojawia się również tytuł.
Sądzę więc, że moje 2 pytania to:
1) Jak uzyskać nazwę lokalizacji, jeśli istnieje (np. Apple Store)?
2) Czy muszę już budować swój ciąg, ponieważ wygląda na to, że słownik adresowy już to dla mnie robi?
Dzięki!