对于我正在构建的应用程序,我想实现一个功能,允许用户指定葡萄酒的地理原产地(国家(例如法国)、地区(例如波尔多)、次地区(例如保拉克))。
我想确保我不必自己添加所有可用的国家/地区,并且进入数据库的所有信息都是有效的。因此,我决定这样做:
Country包含所有相关信息的对象。只有当存在这样的物体时,酒车才能被拯救这工作得很好,除了一件事:苹果地图可以从任何地方返回任何东西,比如餐馆、商店等。
我的问题:我如何指定我要寻找的内容?我只能指定我正在搜索的区域,这与我的情况无关。我希望能够告诉苹果地图仅查找国家、地区、城市等。这在某种程度上可能吗?我已经用尽谷歌来解决这个问题,到目前为止还没有找到办法。
当我使用相同的字符串在MKLocalSearch和Apple Maps中搜索时,我会得到不同的结果,通常在Apple Maps中我会得到很多不同的位置,但在MKLocalSearch中我只得到一个.
Apple地图:
我的应用程序使用MKLocalSearch:
在这两种情况下,我都在寻找柏林和MKLocalSearchRequest,我设置了柏林地区的.region属性
Apple使用哪些服务进行位置搜索?
我正在MKLocalSearch执行地图搜索。我的问题是响应中MKMapItems的排序。例如,搜索我当前所在的城市将首先返回许多与城市名称有关的业务,而我必须向下滚动一会才能找到实际的城市。我正在使用的region属性MKLocalSearchRequest将搜索集中在附近区域。
我的问题是:
不知道是否相关,但是这里是搜索的代码:
-(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) 我正在开发一个应用程序,用户可以在其中搜索兴趣点,选择搜索结果,然后MKMapView将以结果坐标为中心.
我的问题是如何实现自动完成?我已经做了研究 MKLocalSearch,并MKLocalSearchRequest和它似乎是苹果建议API对iOS6.1 +位置搜索.但是,我找不到任何带有自动完成功能的示例或带有MKLocalSearch和的建议MKLocalSearchRequest.是否可以像Apple的地图应用程序一样自动完成位置搜索或显示建议列表?谢谢!
Apple在iOS 9.3中引入了MKLocalSearchCompleter和MKLocalSearchCompletion.我正在努力实现它.它变为两步过程1)输入部分术语 - >生成完整的搜索文本.2)用户选择其中一个来搜索实际位置.
问题是,如果我搜索200个townsend,它会给我一个位置列表,但它会被应用程序视为建议.我们如何识别它是MKMampItem还是建议?
我在 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
ios ×6
mapkit ×3
maps ×2
mkmapview ×2
cocoa-touch ×1
ios9.3 ×1
iphone ×1
objective-c ×1
uisearchbar ×1