MKLocalSearch 没有找到明显的结果

Posted

技术标签:

【中文标题】MKLocalSearch 没有找到明显的结果【英文标题】:MKLocalSearch not finding obvious results 【发布时间】:2014-07-30 02:12:52 【问题描述】:

我的代码与以下示例几乎相同:

https://github.com/iamamused/Example-MKLocalSearch.git

以下是重要的部分:

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet MKMapView *ibMapView;
@end

@implementation ViewController 
    MKLocalSearch *localSearch;
    MKLocalSearchResponse *results;


- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar 
    [localSearch cancel];
    MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
    request.naturalLanguageQuery = searchBar.text;
    request.region = self.ibMapView.region;    
    localSearch = [[MKLocalSearch alloc] initWithRequest:request];
    [localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error)
        [self.resultTable reloadData];
    

当 Sutter 和 Mason aka 600 Sutter St. 位于地图区域内时,搜索“600 Sutte”将包含明显的结果“600 Sutter St.”,这似乎是合理的。我就是无法让它发挥作用。我尝试了许多不同的街道,但在获得直接在地图区域中的结果之前,我经常会得到州外的结果。

另外,“600 Sut”返回不相关的结果,而“600 Su”返回错误4。它真的没有找到任何以“600 Su”开头的东西吗?

我使用这个 API 是完全错误的,还是它不适合我想要用它做的事情?

所有查询的地图区域:

600 苏特

600苏

【问题讨论】:

【参考方案1】:

我最终放弃了 Apple 本地搜索 API,转而使用 Google。他们的 Place API 正是我所需要的。它可以快速找到相关结果,每天最多 10 万个请求无需任何费用。

自动完成: https://developers.google.com/places/documentation/autocomplete

详细信息(纬度、经度需要这个): https://developers.google.com/places/documentation/details

在JSONModel 的帮助下,我在几个小时内将它构建到了我的 ios 应用程序中。

结果正是我希望看到的:

【讨论】:

【参考方案2】:

@borisz - 点数太少,无法直接发表评论。请注意在您的 IOS 应用中使用 Google Places API。 Google 在其条款和条件中声明,任何显示从 Google Places API 获取的数据的地图都必须是 Google 地图。因此,如果您仍然希望使用他们的 API 和搜索,只需确保您也在使用 Google Map 而不是 Apple 的本地地图。希望这会有所帮助 - 祝你好运!

【讨论】:

感谢您的评论!我最终完全切换到了谷歌、地图和 API。 随时!同样在这里,您根本无法击败 Google 的结果:)【参考方案3】:

为仍有类似问题的人发布此内容。 您不应该使用 MKLocalSearchRequest() 而是使用 MKLocalSearchCompleter,它可以提供更好的结果并在当前的 Apple 地图中使用。

您可以在此学习如何实现 answer

【讨论】:

以上是关于MKLocalSearch 没有找到明显的结果的主要内容,如果未能解决你的问题,请参考以下文章

使用 MKLocalSearch/MapKit 查找附近的餐馆?

正确使用 MKLocalSearch CompletionHandler

MKLocalSearch 生成没有 URL 的 MKMapItems

MKLocalSearch 结果的唯一 ID?

imfindcircles 没有找到明显的圆圈

为啥使用 MKLocalSearch 会返回错误并且无法加载预期结果?