MKLocalSearch没有找到明显的结果

时间:2014-07-30 02:12:52

标签: ios ios7 mapkit mklocalsearch

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

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又称600 Sutter St.在地图区域内搜索“600 Sutte”时,似乎是合理的,其中包括显而易见的结果“600 Sutter St.”。我无法让它工作。我尝试了许多不同的街道,在获得直接位于地图区域的结果之前,我经常会从状态中得到结果。

此外,“600 Sut”会返回不相关的结果,而“600 Su”会返回错误4.是否真的找不到任何以“600 Su”开头的内容?

我是否完全错误地使用此API,或者它不适合我正在尝试使用它?

所有查询的地图区域: Map Region

600 Sutte 600 Sutte

600 Su 600 Su

3 个答案:

答案 0 :(得分:3)

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

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

详细信息(lat,lon需要这个): https://developers.google.com/places/documentation/details

JSONModel的帮助下,我在几小时内将其构建到我的iOS应用中。

结果正是我希望看到的结果:

enter image description here

答案 1 :(得分:1)

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

答案 2 :(得分:-1)

将其发布给仍存在类似问题的人。 您不应该使用MKLocalSearchRequest()而是使用MKLocalSearchCompleter,它可以提供更好的结果并在当前的Apple Maps中使用。

您可以了解如何在此实施 answer