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