tra*_*vdu 5 geocoding objective-c ios apple-maps
我在iOS应用程序中实现了搜索栏.我想获得与Apple Maps应用程序相同(部分结果)的搜索提示.我试图找出苹果如何实现它,但我在谷歌或在stackoverflow上没有成功.
在我的UITableView*searchHintTableView中显示的内容无关紧要.我只是没有得到正确的搜索提示数量.我在相同的设备和相同的3G wifi网络(3G SIM路由器)上使用我的应用程序和Apple Maps应用程序.
我尝试了什么:
在方法中:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;
Run Code Online (Sandbox Code Playgroud)
我有以下代码:
...
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];
}
];
...
Run Code Online (Sandbox Code Playgroud)
输入参数如下
而不是来自Apple Maps的10个结果(地址相关),我最多得到2个(NSArray*地标).
完整的城市名称"埃森"这个代码只返回1个结果.Apple再次映射10.
我使用正确的API将部分结果显示为搜索提示吗?如果没有,那么如何正确地执行或我应该使用哪个API?
编辑: 当我被要求解释为什么这不重复我正在编辑这篇文章.我的问题是如何获得与Apple Maps iOS应用程序相同的结果.当我输入更大的地址或完整地址时,我得到准确的位置.当我输入地址的小部分时,我只是得到相同数量的结果.
| 归档时间: |
|
| 查看次数: |
417 次 |
| 最近记录: |