Я пытаюсь создать предложение с адресами автозаполнения с помощью JSON. Проблема, с которой я столкнулась, заключается в том, что я могу получить широту и долготу от пользовательских типов на UISearchDisplay
. Однако я пытаюсь разобрать эти данные для имен имен. Я пытался использовать обратное геокодирование от Apple, но без успеха. Я получаю только одно значение. Я использовал геокодирование яблока сразу, но результаты не были тем, чего я ожидал. Вот код:JSON Геокодирование для iOS - разобрать широту/долготу по адресу
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString{
NSError *error;
NSString *lookUpString = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?address=%@&sensor=true", self.searchBar.text];
lookUpString = [lookUpString stringByReplacingOccurrencesOfString:@" " withString:@"+"];
NSData *jsonResponse = [NSData dataWithContentsOfURL:[NSURL URLWithString:lookUpString]];
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonResponse options:kNilOptions error:&error];
self.locationArray = [[[jsonDict valueForKey:@"results"] valueForKey:@"geometry"] valueForKey:@"location"];
int total = self.locationArray.count;
for (int i = 0; i < total - 1; i++)
{
NSLog(@"locationArray count: %d", self.locationArray.count);
NSArray *localLocations;
localLocations = [self.locationArray objectAtIndex:i];
NSLog(@"%d",i);
NSString *latitudeString = [localLocations valueForKey:@"lat"];
NSString *longitudeString = [localLocations valueForKey:@"lng"];
NSLog(@"LatitudeString:%@ & LongitudeString:%@", latitudeString, longitudeString);
NSString *statusString = [jsonDict valueForKey:@"status"];
NSLog(@"JSON Response Status:%@", statusString);
double latitude = 0.0;
double longitude = 0.0;
latitude = [latitudeString doubleValue];
longitude = [longitudeString doubleValue];
CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
[self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error){
[[self placemarks] addObject:placemarks];
NSLog(@"PLACEMARKS %d", self.placemarks.count);
}];
}
NSLog(@"Mutable array %d", self.placemarks.count);
[self.searchDisplayController.searchResultsTableView reloadData];
return NO;
}
NSLog(@"PLACEMARKS %d", self.placemarks.count);
отображать только один раз, в конце задачи. Любые предложения?