地点输入提示检索(也被称为POI热词建议检索、在线建议检索、Suggestion POI search),简称Sug检索,是指根据关键词查询在线建议词。为了帮助开发者实现检索出来的关键词快速定位到地图上,SDK开放了检索结果的经纬度信息及对应POI点的UID信息。Sug检索能够减少用户输入检索信息的长度,大幅提升用户的产品体验。如:输入“百度”,提示“百度大厦A座”,“百度科技园”。
地点输入提示检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framework
#import <BaiduMapAPI_Base/BMKBaseComponent.h> #import <BaiduMapAPI_Search/BMKSearchComponent.h>
// 在桥接头文件BMKSwiftDemo-Bridging-Header中添加 #import <BaiduMapAPI_Base/BMKBaseComponent.h> #import <BaiduMapAPI_Search/BMKSearchComponent.h>
BMKSuggestionSearch *search = [[BMKSuggestionSearch alloc] init];
//初始化BMKSuggestionSearch实例 let search = BMKSuggestionSearch()
search.delegate = self;
search.delegate = self
BMKSuggestionSearchOption* option = [[BMKSuggestionSearchOption alloc] init]; option.cityname = @"北京"; option.keyword = @"中关村";
//初始化请求参数类BMKSuggestionSearchOption的实例 let suggestionOption = BMKSuggestionSearchOption() //城市名 suggestionOption.cityname = "北京" //检索关键字 suggestionOption.keyword = "中关村" //是否只返回指定城市检索结果,默认为NO(海外区域暂不支持设置cityLimit) //suggestionOption.cityLimit = NO
BOOL flag = [search suggestionSearch:option]; if (flag) { NSLog(@"Sug检索发送成功"); } else { NSLog(@"Sug检索发送失败"); }
/** 关键词检索,异步方法,返回结果在BMKSuggestionSearchDelegate 的onGetSuggestionResult里 suggestionOption sug检索信息类 成功返回YES,否则返回NO */ let flag = search.suggestionSearch(suggestionOption) if flag { print("关键词检索成功") } else { print("关键词检索失败") }
/** *返回suggestion搜索结果 *@param searcher 搜索对象 *@param result 搜索结果 *@param error 错误号,@see BMKSearchErrorCode */ - (void)onGetSuggestionResult:(BMKSuggestionSearch*)searcher result:( BMKSuggestionSearchResult*)result errorCode:(BMKSearchErrorCode)error{ if (error == BMK_SEARCH_NO_ERROR) { //在此处理正常结果 } else { NSLog(@"检索失败"); } }
/** 关键字检索结果回调 @param searcher 检索对象 @param result 关键字检索结果 @param error 错误码,@see BMKCloudErrorCode */ func onGetSuggestionResult(_ searcher: BMKSuggestionSearch!, result: BMKSuggestionSearchResult!, errorCode error: BMKSearchErrorCode) { if (error == BMK_SEARCH_NO_ERROR) { //在此处理正常结果 } else { print("检索失败"); } }
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKSuggestionSearchPage。BMKSuggestionSearchResult类结构如下图
说明:
BMKSuggestionSearchResult sug检索结果类
BMKSuggestionInfo sug检索信息类
BMKSuggestionChildrenInfo sug检索子节点类
1)Sug检索的本质是根据部分关键字检索出来可能的完整关键词名称,即关键词匹配;
2)POI检索的功能是检索POI,如果需要查询某些关键词对应的POI的具体信息,请使用POI检索来完成。
注意:Sug检索结果的第一条可能存在没有经纬度信息的情况,该条结果为文字联想出来的关键词结果,并不对应任何确切POI点。
例如输入“肯”,第一条结果为“肯德基”,这条结果是一个泛指的名称,不会带有经纬度等信息。
常用的使用方式:用户输入“关键字”时以Sug检索做为检索入口,边输入边检索热词;输入完成后如还没有搜到结果,再用POI检索以“关键字”为keywords再继续搜索。
Sug检索,城市为必填输入项。 BMKSuggestionSearchOption中城市控制属性citylimit(默认值为NO)。
Sug检索不控制poi必须在城市内:citylimit设置为NO时,不会严格限制召回POI一定在请求中传入的城市内。若检索时,在其他城市发现检索热度及匹配度较高的POI,也会一并召回。如,在北京市检索「迪士尼乐园」。Sug检索可以将city设置为全国,但不建议使用,会降低检索精度。
Sug检索控制poi在城市内:citylimit设置为YES时,仅返回city中指定城市检索结果。
注意:境外区域暂不支持设置cityLimit。