如何在我的应用程序中获得与苹果地图相同的搜索提示
我在iOS应用程序中实现了搜索栏。 我想获得与Apple Maps应用程序相同(部分结果)的搜索提示。 我试图找出苹果如何实现它,但我在谷歌或在stackoverflow上没有成功。
在我的UITableView * searchHintTableView中显示的内容并不重要。 我只是没有得到正确的搜索提示数。 我在相同的设备和相同的3G wifi网络(3G SIM路由器)上使用我的应用程序和Apple Maps应用程序。
我尝试了什么:
- 我试图用半径指定区域。
- 从先前的请求中取消地理编码。
在方法中:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;
我有以下代码:
... CLGeocoder *geocoder = [[CLGeocoder alloc] init]; NSString *location = [NSString stringWithFormat:@"%@", searchText]; // CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:coord // radius:100000000 identifier:@"Hint Region"]; // [geocoder cancelGeocode]; [geocoder geocodeAddressString:location completionHandler:^(NSArray *placemarks, NSError *error) { if (error != nil) { DDLogCVerbose(@"Error %@", [error description]); [searchHintArray removeAllObjects]; [searchHintTableView reloadData]; return; } DDLogCVerbose(@"CLGeocoder >> %@", [placemarks description]); //to get rid of unwanted results when searchText is inadequate //even when previous partial results are not removed I don't get that many results as Apple Maps application. [searchHintArray removeAllObjects]; [placemarks enumerateObjectsUsingBlock:^(CLPlacemark *placemark, NSUInteger idx, BOOL *stop) { MKPlacemark *mkPlacemark = [[MKPlacemark alloc] initWithPlacemark:placemark]; [searchHintArray addObject:mkPlacemark]; }]; [searchHintTableView reloadData]; } ]; ...
输入参数如下
- searchText:Ess
- 纬度:51.46
- 经度:7.01
而不是来自Apple Maps的10个结果(地址相关),我最多得到2个(NSArray *地标)。
完整的城市名称“埃森”这个代码只返回1个结果。 Apple再次映射10。
我使用正确的API将部分结果显示为搜索提示吗? 如果没有,那么如何正确地做或我应该使用哪个API?
编辑:当我被要求解释为什么这不重复我正在编辑这篇文章。 我的问题是如何获得与Apple Maps iOS应用程序相同的结果。 当我输入更大的地址或完整地址时,我得到准确的位置。 当我输入地址的小部分时,我只是得到相同数量的结果。