Dan*_*son 4 iphone mapkit ios mklocalsearch
我正在MKLocalSearch执行地图搜索。我的问题是响应中MKMapItems的排序。例如,搜索我当前所在的城市将首先返回许多与城市名称有关的业务,而我必须向下滚动一会才能找到实际的城市。我正在使用的region属性MKLocalSearchRequest将搜索集中在附近区域。
我的问题是:
不知道是否相关,但是这里是搜索的代码:
-(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];
}
}];
}
Run Code Online (Sandbox Code Playgroud)
MKLocalSearchRequest仅接受naturalLanguageQuery和region作为参数,因此您可以“执行仅返回地址的搜索吗?”-否。
但是,在请求完成后很容易筛选列表。如果您想从列表中过滤掉企业,可以使用一个简单的NSPredicate来完成。
NSPredicate *noBusiness = [NSPredicate predicateWithFormat:@"business.uID == 0"];
NSMutableArray *itemsWithoutBusinesses = [response.mapItems mutableCopy];
[itemsWithoutBusinesses filterUsingPredicate:noBusiness];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2319 次 |
| 最近记录: |