相关疑难解决方法(0)

是否可以使用MKLocalSearch查找附近的所有商家?

为了避免foursquare或其他本地搜索提供商的API限制,我想使用iOS 6.1中的MKLocalSearch.以下代码:

MKLocalSearchRequest *localSearchRequest = [[MKLocalSearchRequest alloc] init];
MKCoordinateRegion localSearchRegion = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake([theLocationChange.latitude floatValue], [theLocationChange.longitude floatValue]), 500.0f, 500.0f);
localSearchRequest.naturalLanguageQuery = @"restaurants";
localSearchRequest.region = localSearchRegion;
MKLocalSearch *localSearch = [[MKLocalSearch alloc] initWithRequest:localSearchRequest];

[localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error)
{
    if (error)
    {
        NSLog([error localizedDescription]);
    }
    for (MKMapItem* mapItem in response.mapItems)
    {
        NSLog(@"mapitem name is: %@",mapItem.name);
    }

}];
Run Code Online (Sandbox Code Playgroud)

将正确获取并显示指定位置附近的餐馆.如果我localSearchRequest.naturalLanguageQuery改为"酒店",它将获取并显示酒店.这同样适用于"医院","酒吧"等.但是,如果我尝试空字符串,或"","*"或"?" 因为localSearchRequest.naturalLanguageQuery,它没有返回任何结果.

如果我使用foursquare API并将其发送到一个位置,我可以轻松找回包含所有类型的本地商家的场所列表.有没有办法使用MKLocalSearch返回所有场地或本地商家?

location ios

11
推荐指数
1
解决办法
1750
查看次数

过滤/排序MKLocalSearch响应

我正在MKLocalSearch执行地图搜索。我的问题是响应中MKMapItems的排序。例如,搜索我当前所在的城市将首先返回许多与城市名称有关的业务,而我必须向下滚动一会才能找到实际的城市。我正在使用的region属性MKLocalSearchRequest将搜索集中在附近区域。

我的问题是:

  1. 您可以影响回复返回给您的顺序吗?例如,只要输入第一个字母,“地图”应用就会在顶部列出我的城市。为什么没有POI:s或企业列在最前面?
  2. 有没有一种方法可以完全从搜索中消除企业,而仅获得响应地址?

不知道是否相关,但是这里是搜索的代码:

-(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)

iphone mapkit ios mklocalsearch

4
推荐指数
1
解决办法
2319
查看次数

标签 统计

ios ×2

iphone ×1

location ×1

mapkit ×1

mklocalsearch ×1