Ios 获取MKLocalSearch以仅返回位置

Ios 获取MKLocalSearch以仅返回位置,ios,objective-c,xcode,mkmapview,Ios,Objective C,Xcode,Mkmapview,我查看了文档,没有找到使用MKLocalSearch只返回区域的方法。例如,我希望搜索在全球范围内搜索城市、城镇、村庄和县,但不返回任何企业或酒店等。这是否可能 谢谢 我想你可以这样使用谓词: NSPredicate *noBusiness = [NSPredicate predicateWithFormat:@"business.uID == 0"]; NSMutableArray *itemsWithoutBusinesses = [response.mapItems mutableCopy

我查看了文档,没有找到使用MKLocalSearch只返回区域的方法。例如,我希望搜索在全球范围内搜索城市、城镇、村庄和县,但不返回任何企业或酒店等。这是否可能

谢谢


我想你可以这样使用谓词:

NSPredicate *noBusiness = [NSPredicate predicateWithFormat:@"business.uID == 0"];
NSMutableArray *itemsWithoutBusinesses = [response.mapItems mutableCopy];
[itemsWithoutBusinesses filterUsingPredicate:noBusiness]; 
还添加了示例本地搜索代码,这将解决您的问题

-(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];
    }
}];

}

根据您的要求更改addressDictionary的关键参数

      for(MKMapItem *mapItem in response.mapItems)
    {
        NSLog(@"%@",mapItem.placemark.addressDictionary[@"Street"]);
}

这是如何将MKLocalSearch结果限制为“地点”的?我很困惑,苹果是否为MKLocalSearch返回的业务提供ID?经过一些挖掘,这是一个使用GEOBusiness类的私有框架。