MKLocalSearch不像苹果地图搜索那样工作



我创建了一个MapKit,并尝试使用MKLocalSearch。与苹果地图相比,我注意到mklocalsearch被限制为10个结果。那么,苹果地图是如何在搜索栏下显示15条建议的呢?

好吧,举个例子。我试图找到"Barcelona"。在苹果地图中,只写了"barc"就会被建议使用,并且在键入Barcelona的整个过程中都会出现在建议列表中。现在在我自己的地图视图中,我实际上必须输入完整的巴塞罗那才能得到建议:西班牙,巴塞罗那。在我的路上,我得到了其他建议,但不像西班牙、巴塞罗那,也不像苹果地图。

任何关于如何使其工作以及为什么苹果地图工作方式不同的见解(说明mklocalseach的15个结果与10个结果)

这是在textField Changes:上调用的代码

- (IBAction)searchFieldChanged:(UITextField *)sender {
if(self.locationTextfield.text.length>0)
    self.tableView.hidden = NO;
else
    self.tableView.hidden = YES;
NSString *query = self.locationTextfield.text;
// Create and initialize a search request object.
MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.naturalLanguageQuery = query;
request.region = self.mapsView.region;//we dont want region-specific search results!
//request.region = MKCoordinateRegionMakeWithDistance(self.mapsView.userLocation.location.coordinate,40000000, 15000000);
// Create and initialize a search object.
MKLocalSearch *search = [[MKLocalSearch alloc] initWithRequest:request];
// Start the search and display the results as annotations on the map.
[search startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error)
 {
     [placeMarks removeAllObjects];
     NSLog(@"p-count: %lu", response.mapItems.count);
     for (MKMapItem *item in response.mapItems) {
         [placeMarks addObject:item.placemark];
         self.tempPlacemark = item.placemark;
         NSLog(@"placemark: %@", item.placemark);//.location.coordinate.latitude);
     }
     //if(placemarks.count==0)
     // appDelegate.staticPlacemark = nil;

     //[self.mapsView removeAnnotations:[self.mapsView annotations]];
     //[self.mapsView showAnnotations:placemarks animated:NO];
     [self.tableView reloadData];
 }];
}

您所做的是使用MKLocalSearchRequest进行MKLocalSearch。苹果在其macOS和iOS地图应用程序中所做的是使用更新的MKLocalSearchCompleter类来获取自动完成建议。这些建议用于实时搜索,并显示在UITableView中。当用户选择一个条目时,该建议用于初始化MKLocalSearchRequest,以获取有关该位置的详细信息。

相关内容

  • 没有找到相关文章

最新更新