1

以下のコードでは、ジオコード NSArray *placemarks から返されるオブジェクトは常に 1 つだけです。NSLog を実行すると、常に 1 つのオブジェクトとして表示されます。検索バーに何を入力しても。

iPhone 5 デバイスでテストしています。私はサンフランシスコに住んでいますが、デバイスのマップは問題なく動作します。つまり、「スターバックス」と入力すると、オブジェクトが 1 つだけ返され、「アルバロ オブレゴン、連邦区 01020」と呼ばれます。近くに少なくとも 10 のスターバックスがあります。

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {

    [geocoder geocodeAddressString:searchString completionHandler:^(NSArray* placemarks, NSError* error)

  if ([placemarks count] > 0) {
        NSLog(@"Number of objects in placemarks %i",placemarks.count);
        for (CLPlacemark* aPlacemark in placemarks)
        {
            self.street = aPlacemark.thoroughfare;
            self.city = aPlacemark.locality;
            self.state = aPlacemark.administrativeArea;
            self.zip = aPlacemark.postalCode;

            NSMutableString *result = [NSMutableString string];
            if (self.street)
                [result appendString:self.street];
            if (self.street && (self.city || self.state || self.zip))
                [result appendString:@", "];
            if (self.city)
                [result appendString:self.city];
            if (self.city && self.state)
                [result appendString:@", "];
            if (self.state)
                [result appendString:self.state];
            if (self.zip)
                [result appendFormat:@" %@", self.zip];
            placemarksArray = [[NSMutableArray alloc]init];
            [self.placemarksArray addObject:result];
            NSLog(@" This is result %@", result);

            [self.searchDisplayController.searchResultsTableView reloadData];
        }
    }

} 
 ]; 
return NO;

}

4

0 に答える 0