标签: mklocalsearch

MapKit 定义所需的搜索结果类型(国家、城市、地区等)

对于我正在构建的应用程序,我想实现一个功能,允许用户指定葡萄酒的地理原产地(国家(例如法国)、地区(例如波尔多)、次地区(例如保拉克))。

我想确保我不必自己添加所有可用的国家/地区,并且进入数据库的所有信息都是有效的。因此,我决定这样做:

  1. 用户添加一种新葡萄酒并输入其来源国家/地区的名称
  2. 打字时,应用程序会在苹果地图数据库中进行搜索
  3. 此搜索的结果显示为建议,当用户点击建议时,应用程序会创建一个Country包含所有相关信息的对象。只有当存在这样的物体时,酒车才能被拯救

这工作得很好,除了一件事:苹果地图可以从任何地方返回任何东西,比如餐馆、商店等。

我的问题:我如何指定我要寻找的内容?我只能指定我正在搜索的区域,这与我的情况无关。我希望能够告诉苹果地图仅查找国家、地区、城市等。这在某种程度上可能吗?我已经用尽谷歌来解决这个问题,到目前为止还没有找到办法。

maps mapkit ios mklocalsearch mklocalsearchrequest

5
推荐指数
1
解决办法
6433
查看次数

MKLocalSearch不提供与原生Apple Maps应用中的搜索相同的结果

当我使用相同的字符串在MKLocalSearch和Apple Maps中搜索时,我会得到不同的结果,通常在Apple Maps中我会得到很多不同的位置,但在MKLocalSearch中我只得到一个.

Apple地图:

在此输入图像描述

我的应用程序使用MKLocalSearch:

在此输入图像描述

在这两种情况下,我都在寻找柏林和MKLocalSearchRequest,我设置了柏林地区的.region属性

Apple使用哪些服务进行位置搜索?

maps mapkit ios mklocalsearch mklocalsearchrequest

5
推荐指数
1
解决办法
815
查看次数

过滤/排序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
查看次数

如何使用UISearchBar搜索具有自动完成和建议的位置?

我正在开发一个应用程序,用户可以在其中搜索兴趣点,选择搜索结果,然后MKMapView将以结果坐标为中心.

我的问题是如何实现自动完成?我已经做了研究 MKLocalSearch,并MKLocalSearchRequest和它似乎是苹果建议API对iOS6.1 +位置搜索.但是,我找不到任何带有自动完成功能的示例或带有MKLocalSearch和的建议MKLocalSearchRequest.是否可以像Apple的地图应用程序一样自动完成位置搜索或显示建议列表?谢谢!

cocoa-touch uisearchbar mkmapview ios mklocalsearch

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

如何从iOS9.3中的MKLocalSearchCompletion对象中识别MKMapItem?

Apple在iOS 9.3中引入了MKLocalSearchCompleter和MKLocalSearchCompletion.我正在努力实现它.它变为两步过程1)输入部分术语 - >生成完整的搜索文本.2)用户选择其中一个来搜索实际位置.

问题是,如果我搜索200个townsend,它会给我一个位置列表,但它会被应用程序视为建议.我们如何识别它是MKMampItem还是建议?

ios mklocalsearch mklocalsearchrequest ios9.3

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

MKLocalSearch 没有找到附近的所有餐馆

我在 mkmapview 的某个区域内实现了一个 MKLocalSearch,它返回该区域内的一系列餐馆。通过研究,只展示了 10 家餐厅。有没有办法让 MKLocalSearch 可以返回一个区域内的 10 多家餐厅?这是代码,

MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc]init];
request.naturalLanguageQuery = @"restaurant";
request.region = midRegion;

MKLocalSearch *localSearch = [[MKLocalSearch alloc]initWithRequest:request];
[localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {
    NSMutableArray *annotations = [NSMutableArray array];
    [response.mapItems enumerateObjectsUsingBlock:^(MKMapItem *item, NSUInteger idx, BOOL *stop){
        CustomAnnotation *annotation = [[CustomAnnotation alloc] initWithPlacemark:item.placemark];
        annotation.title = item.name;
        annotation.subtitle = item.placemark.addressDictionary[(NSString *)kABPersonAddressStreetKey];
        annotation.phone = item.phoneNumber;

        [annotations addObject:annotation];
    }];

    [self.mapView addAnnotations:annotations];

 }];
}       
Run Code Online (Sandbox Code Playgroud)

objective-c mkmapview ios mklocalsearch mklocalsearchrequest

2
推荐指数
1
解决办法
794
查看次数