我试图弄清楚如何获取MKPlacemark
物品的街道地址。我在控制台中打印了一个项目,我可以看到那里的信息,但我只得到thoroughfare
没有街道地址号码的信息。
这是我的代码:
- (void)performSearch {
MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc]init];
request.naturalLanguageQuery = _searchText.text;
request.region = _mapView.region;
_matchingItems = [[NSMutableArray alloc]init];
MKLocalSearch *search = [[MKLocalSearch alloc]initWithRequest:request];
NSLog(@"MKLocalSearch array created");
[search startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {
if (response.mapItems.count == 0) {
NSLog(@"No Matches Found");
} else {
for (MKMapItem *item in response.mapItems) {
[_matchingItems addObject:item];
MKPointAnnotation *annotation = [[MKPointAnnotation alloc]init];
annotation.coordinate = item.placemark.coordinate;
// Pull out address info from MKMapItem
MKPlacemark *placemark = item.placemark;
NSLog(@"Placemark info: %@", item.placemark);
// Address details
NSDictionary *address = placemark.addressDictionary;
NSString *titleString = @"";
NSString *subtitleString = @"";
NSString *name = @"";
NSString *thoroughfare = @"";
NSString *state = @"";
NSString *city = @"";
NSString *country = @"";
name = [address objectForKey:@"Name"] ? [address objectForKey:@"Name"] : @"";
thoroughfare = [address objectForKey:@"Thoroughfare"] ? [address objectForKey:@"Thoroughfare"] : @"";
state = [address objectForKey:@"State"] ? [address objectForKey:@"State"] : @"";
city = [address objectForKey:@"City"] ? [address objectForKey:@"City"] : @"";
country = [address objectForKey:@"Country"] ? [address objectForKey:@"Country"] : @"";
titleString = [NSString stringWithFormat:@"%@ %@", name, thoroughfare];
subtitleString = [NSString stringWithFormat:@"%@ %@ %@ %@", thoroughfare, state, city, country];
// Strings for annotation
annotation.title = item.name;
annotation.subtitle = subtitleString;
[_mapView addAnnotation:annotation];
}
}
}];
}