4

私はMKLocalSearch地図検索を実行するために使用しています。私の問題は、応答での MKMapItems の順序です。たとえば、私が現在いる都市を検索すると、最初にその都市名に関連する多数の企業が返され、実際の都市を見つけるためにしばらくスクロールする必要があります。regionのプロパティを使用してMKLocalSearchRequest、近くの領域に検索を集中させています。

私の質問は次のとおりです。

  1. 返信が返される順序を変更できますか? たとえば、Maps アプリは、最初の文字を入力しただけで私の都市を一番上に表示します。トップに POI: やビジネスが表示されないのはなぜですか?
  2. 検索から企業を完全に除外し、住所のみを取得する方法はありますか?

関連するかどうかはわかりませんが、検索用のコードは次のとおりです。

-(void)issueLocalSearchLookup:(NSString *)searchString {
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(self.location.coordinate, 30000, 30000);
    self.localSearchRequest = [[MKLocalSearchRequest alloc] init];
    self.localSearchRequest.region = region;
    self.localSearchRequest.naturalLanguageQuery = searchString;
    self.localSearch = [[MKLocalSearch alloc] initWithRequest:self.localSearchRequest];

    [self.localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {
        if(error){
            NSLog(@"LocalSearch failed with error: %@", error);
            return;
        } else {
            for(MKMapItem *mapItem in response.mapItems){
                [self.data addObject:mapItem];
            }
            [self.searchDisplayController.searchResultsTableView reloadData];
        }
    }];
}
4

2 に答える 2

0

MKLocalSearch を使用する代わりに、CLGeocoder を使用して逆ジオコード クエリを実行できます。

CLGeocoder *geo = [[CLGeocoder alloc] init];

[geo reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
   // look at the placemarks and grab the locality out of them to get the city name

 }];
于 2014-10-25T01:39:42.950 に答える