ios地图sdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
poi检索
下载开发文档
poi检索简介

poi(point of interest),中文可以翻译为“兴趣点”。在地理信息系统中,一个poi可以是一栋房子、一个商铺、一个邮筒、一个公交站等。 百度地图sdk提供五种类型的poi检索:poi城市检索、poi周边检索、poi矩形区域检索、poi室内检索以及poi详情检索。

poi城市内检索

城市检索是根据关键字检索适用于在「某个行政区划,如北京市、四川省等」搜索某个名称相关的poi,例如:查找北京市的“小吃”。

实现步骤
1. 引入头文件

poi城市检索功能使用的是地图sdk的检索功能,需要在工程中导入检索功能包baidumapapi_search.framework

#import<baidumapapi_base/bmkbasecomponent.h>
#import<baidumapapi_search/bmksearchcomponent.h>
2. 初始化poi城市检索对象
bmkpoisearch*poisearch =[[bmkpoisearch alloc] init];
3. 设置poi城市检索代理
//此处需要先遵循协议
poisearch.delegate= self;
4. 构造poi城市检索参数

bmkpoicitysearchoption 中tags字段可参考文档百度地图poi行业分类

//初始化请求参数类bmkcitysearchoption的实例
bmkpoicitysearchoption*cityoption =[[bmkpoicitysearchoption alloc] init];
//检索关键字,必选。举例:小吃
cityoption.keyword= @"小吃";
//区域名称(市或区的名字,如北京市,海淀区),最长不超过25个字符,必选
cityoption.city= @"北京市";
//检索分类,可选,与keyword字段组合进行检索,多个分类以","分隔。举例:美食,烧烤,酒店
cityoption.tags= @[@"美食",@"烧烤"];
//区域数据返回限制,可选,为yes时,仅返回city对应区域内数据
cityoption.iscitylimit=yes;
//poi检索结果详细程度
//cityoption.scope = bmk_poi_scope_basic_information;
//检索过滤条件,scope字段为bmk_poi_scope_detail_information时,filter字段才有效
//cityoption.filter = filter;
//分页页码,默认为0,0代表第一页,1代表第二页,以此类推
cityoption.pageindex=0;
//单次召回poi数量,默认为10条记录,最大返回20条
cityoption.pagesize=10;
注意:scope字段默认为基本信息bmk_poi_scope_basic_information,如果要使用检索过滤条件filter字段,需要将scope字段设置为详细信息bmk_poi_scope_detail_information。
5. 发起poi城市检索请求
bool flag =[poisearch poisearchincity:cityoption];
if(flag){
nslog(@"poi城市内检索成功");
}else{
nslog(@"poi城市内检索失败");
}
6. 实现代理方法,获取检索结果
#pragma mark -bmkpoisearchdelegate
/**
*返回poi搜索结果
*@param searcher 搜索对象
*@param poiresult 搜索结果列表
*@param errorcode 错误码,@see bmksearcherrorcode
*/
-(void)ongetpoiresult:(bmkpoisearch*)searcher result:(bmkpoisearchresult*)poiresult errorcode:(bmksearcherrorcode)errorcode {
//bmksearcherrorcode错误码,bmk_search_no_error:检索结果正常返回
if(errorcode ==bmk_search_no_error){
//在此处理正常结果
nslog(@"检索结果返回成功:%@",poiresult.poiinfolist);
}
elseif(errorcode ==bmk_search_ambiguous_keyword){
nslog(@"检索词有歧义");
}else{
nslog(@"其他检索结果错误码相关处理");
}
}
7. 处理检索返回的结果

通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的bmkpoicitysearchpage。 bmkpoisearchresult类结构如下图:

说明:

bmkpoisearchresultpoi检索结果类
bmkpoiinfopoi信息类
bmkpoidetailinfopoi详情信息类
nsarray *childrenpoi详情子节点信息,默认不返回,需要将scope字段设置为bmk_poi_scope_detail_information
poi周边(圆形区域)检索

周边检索是一个圆形范围,适用于以某个位置为中心点,自定义检索半径值,搜索某个位置附近的poi。例如:查找当前位置(40.051231, 116.282051)附近1000米范围内的“小吃”。

实现步骤
1. 引入头文件

poi周边检索功能使用的是地图sdk的检索功能,需要在工程中导入检索功能包baidumapapi_search.framework

#import<baidumapapi_base/bmkbasecomponent.h>
#import<baidumapapi_search/bmksearchcomponent.h>
2. 初始化poi周边检索对象
bmkpoisearch*poisearch =[[bmkpoisearch alloc] init];
3. 设置poi周边检索代理
//此处需要先遵循协议
poisearch.delegate= self;
4. 构造poi周边检索参数

bmkpoinearbysearchoption 中tags字段可参考文档百度地图poi行业分类

//初始化请求参数类bmknearbysearchoption的实例
bmkpoinearbysearchoption*nearbyoption =[[bmkpoinearbysearchoption alloc] init];
//检索关键字,必选
nearbyoption.keywords= @[@"小吃"];
//检索中心点的经纬度,必选
nearbyoption.location=cllocationcoordinate2dmake(40.051231,116.282051);
//检索半径,单位是米。
nearbyoption.radius=1000;
//检索分类,可选。
nearbyoption.tags= @[@"美食"];
//是否严格限定召回结果在设置检索半径范围内。默认值为false。
nearbyoption.isradiuslimit=no;
//poi检索结果详细程度
//nearbyoption.scope = bmk_poi_scope_basic_information;
//检索过滤条件,scope字段为bmk_poi_scope_detail_information时,filter字段才有效
//nearbyoption.filter = filter;
//分页页码,默认为0,0代表第一页,1代表第二页,以此类推
nearbyoption.pageindex=0;
//单次召回poi数量,默认为10条记录,最大返回20条。
nearbyoption.pagesize=10;
注意:scope字段默认为基本信息bmk_poi_scope_basic_information,如果要使用检索过滤条件filter字段,需要将scope字段设置为详细信息bmk_poi_scope_detail_information。
5. 发起poi周边检索请求
bool flag =[poisearch poisearchnearby:nearbyoption];
if(flag){
nslog(@"poi周边检索成功");
}else{
nslog(@"poi周边检索失败");
}
6. 实现代理方法,获取检索结果
#pragma mark -bmkpoisearchdelegate
/**
*返回poi搜索结果
*@param searcher 搜索对象
*@param poiresult 搜索结果列表
*@param errorcode 错误码,@see bmksearcherrorcode
*/
-(void)ongetpoiresult:(bmkpoisearch*)searcher result:(bmkpoisearchresult*)poiresult errorcode:(bmksearcherrorcode)errorcode {
//bmksearcherrorcode错误码,bmk_search_no_error:检索结果正常返回
if(errorcode ==bmk_search_no_error){
//在此处理正常结果
nslog(@"检索结果返回成功:%@",poiresult.poiinfolist);
}
elseif(errorcode ==bmk_search_ambiguous_keyword){
nslog(@"检索词有歧义");
}else{
nslog(@"其他检索结果错误码相关处理");
}
}
7. 处理检索返回的结果

通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的bmkpoinearbysearchpage,bmkpoisearchresult类结构如下图:

说明:

bmkpoisearchresultpoi检索结果类
bmkpoiinfopoi信息类
bmkpoidetailinfopoi详情信息类
nsarray *childrenpoi详情子节点信息,默认不返回,需要将scope字段设置为bmk_poi_scope_detail_information
poi矩形区域检索

poi矩形区域检索是在指定的绘制的矩形范围内(依据左下角坐标和右上角坐标绘制的矩形范围)检索poi。

实现步骤
1. 引入头文件

poi矩形区域检索功能使用的是地图sdk的检索功能,需要在工程中导入检索功能包baidumapapi_search.framework

#import<baidumapapi_base/bmkbasecomponent.h>
#import<baidumapapi_search/bmksearchcomponent.h>
2. 初始化poi矩形区域检索对象
bmkpoisearch*poisearch =[[bmkpoisearch alloc] init];
3. 设置poi矩形区域检索代理
//此处需要先遵循协议
poisearch.delegate= self;
4. 构造poi矩形区域检索参数

bmkpoiboundsearchoption中tags字段可参考文档百度地图poi行业分类

//初始化请求参数类bmkboundsearchoption的实例
bmkpoiboundsearchoption*boundoption =[[bmkpoiboundsearchoption alloc] init];
//检索关键字,必选。
boundoption.keywords= @[@"小吃"];
//矩形检索区域的左下角经纬度坐标,必选
boundoption.leftbottom=cllocationcoordinate2dmake(40.049557,116.279295);
//矩形检索区域的右上角经纬度坐标,必选
boundoption.righttop=cllocationcoordinate2dmake(40.056057,116.308102);
//检索分类
boundoption.tags= @[@"美食"];
//poi检索结果详细程度
//boundoption.scope = bmk_poi_scope_basic_information;
//检索过滤条件,scope字段为bmk_poi_scope_detail_information时,filter字段才有效
//boundoption.filter = filter;
//分页页码,默认为0,0代表第一页,1代表第二页,以此类推
boundoption.pageindex=0;
//单次召回poi数量,默认为10条记录,最大返回20条。
boundoption.pagesize=10;
注意:scope字段默认为基本信息bmk_poi_scope_basic_information,如果要使用检索过滤条件filter字段,需要将scope字段设置为详细信息bmk_poi_scope_detail_information。
5. 发起poi矩形区域检索请求
bool flag =[poisearch poisearchinbounds:boundoption];
if(flag){
nslog(@"poi矩形区域内检索成功");
}else{
nslog(@"poi矩形区域内检索失败");
}
6. 实现代理方法,获取检索结果
#pragma mark -bmkpoisearchdelegate
/**
*返回poi搜索结果
*@param searcher 搜索对象
*@param poiresult 搜索结果列表
*@param errorcode 错误码,@see bmksearcherrorcode
*/
-(void)ongetpoiresult:(bmkpoisearch*)searcher result:(bmkpoisearchresult*)poiresult errorcode:(bmksearcherrorcode)errorcode {
//bmksearcherrorcode错误码,bmk_search_no_error:检索结果正常返回
if(errorcode ==bmk_search_no_error){
//在此处理正常结果
nslog(@"检索结果返回成功:%@",poiresult.poiinfolist);
}
elseif(errorcode ==bmk_search_ambiguous_keyword){
nslog(@"检索词有歧义");
}else{
nslog(@"其他检索结果错误码相关处理");
}
}
7. 处理检索返回的结果

通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的bmkpoiboundssearchpage。bmkpoisearchresult类结构如下图

说明:

bmkpoisearchresultpoi检索结果类
bmkpoiinfopoi信息类
bmkpoidetailinfo poi详情信息类
nsarray *childrenpoi详情子节点信息,默认不返回,需要将scope字段设置为bmk_poi_scope_detail_information
poi室内检索

poi室内检索是指检索室内地图上的poi,输入室内id和关键字后,返回室内地图内的poi的点。

实现步骤
1. 引入头文件

poi室内检索功能使用的是地图sdk的检索功能,需要在工程中导入检索功能包baidumapapi_search.framework

#import<baidumapapi_base/bmkbasecomponent.h>
#import<baidumapapi_search/bmksearchcomponent.h>
2. 初始化poi室内检索对象
bmkpoisearch*poisearch =[[bmkpoisearch alloc] init];
3. 设置poi室内检索代理
//此处需要先遵循协议
poisearch.delegate= self;
4. 构造poi室内检索参数

bmkpoiboundsearchoption中tags字段可参考文档百度地图poi行业分类

//初始化请求参数类bmkpoiindoorsearchoption的实例
bmkpoiindoorsearchoption*indooroption =[[bmkpoiindoorsearchoption alloc] init];
/**
*室内检索唯一标识符,必选
*开启室内地图,在代理方法
*-(void)mapview:(bmkmapview *)mapview baseindoormapwithin:(bool)flag baseindoormapinfo:(bmkbaseindoormapinfo *)info
*中可获取室内地图indoorid等相关信息
*/
indooroption.indoorid= @"1261284358413615103";
//室内检索关键字,必选
indooroption.keyword= @"小吃";
//楼层(可选),设置后,会优先获取该楼层的室内poi,然后是其它楼层的。如“f3”,"b3"等。
indooroption.floor= @"f4";
//分页页码,默认为0,0代表第一页,1代表第二页,以此类推
indooroption.pageindex=0;
//单次召回poi数量,默认为10条记录,最大返回20条。
indooroption.pagesize=10;
5. 发起poi室内检索请求
bool flag =[poisearch poiindoorsearch:indooroption];
if(flag){
nslog(@"poi室内检索成功");
}else{
nslog(@"poi室内检索失败");
}
6. 实现代理方法,获取检索结果
#pragma mark -bmkpoisearchdelegate
/**
*返回poi室内搜索结果
*@param searcher 搜索对象
*@param poiindoorresult 搜索结果列表
*@param errorcode 错误码,@see bmksearcherrorcode
*/
-(void)ongetpoiindoorresult:(bmkpoisearch*)searcher result:(bmkpoiindoorsearchresult*)poiindoorresult errorcode:(bmksearcherrorcode)errorcode {
//bmksearcherrorcode错误码,bmk_search_no_error:检索结果正常返回
if(errorcode ==bmk_search_no_error){
//在此处理正常结果
nslog(@"检索结果返回成功:%@",poiindoorresult.poiindoorinfolist);
}
elseif(errorcode ==bmk_search_ambiguous_keyword){
nslog(@"检索词有歧义");
}else{
nslog(@"其他检索结果错误码");
}
}
7. 处理检索返回的结果

通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的bmkpoiindoorsearchpage。bmkpoiindoorsearchresult类结构如下图:

说明:

bmkpoisearchresultpoi室内检索结果类
bmkpoiindoorinfopoi信息类
bmkpoidetailinfo室内poi信息类

注意: 1.室内地图默认是关闭的,检索室内poi需要打开室内地图功能。

    2.室内地图需要显示在屏幕范围内,才支持检索当前室内地图的室内poi。

poi详情检索

poi详情检索提供查询单个poi的详情信息,比如好评、门店营业时间等。

实现步骤
1. 引入头文件

poi详情检索功能使用的是地图sdk的检索功能,需要在工程中导入检索功能包baidumapapi_search.framework

#import<baidumapapi_base/bmkbasecomponent.h>
#import<baidumapapi_search/bmksearchcomponent.h>
2. 初始化poi详情检索对象
bmkpoisearch*poisearch =[[bmkpoisearch alloc] init];
3. 设置poi详情检索代理
//此处需要先遵循协议
poisearch.delegate= self;
4. 构造poi详情检索参数
//初始化请求参数类bmkpoidetailsearchoption的实例
bmkpoidetailsearchoption*detailoption =[[bmkpoidetailsearchoption alloc] init];
//poi的唯一标识符集合,必选
detailoption.poiuids= @[@"ba97895c02a6ddc7f60e775f"];
//poi检索结果详细程度
//detailoption.scope = bmk_poi_scope_basic_information;
5. 发起poi详情检索请求
bool flag =[poisearch poidetailsearch:detailoption];
if(flag){
nslog(@"poi详情检索成功");
}else{
nslog(@"poi详情检索失败");
}
6. 实现代理方法,获取检索结果
#pragma mark -bmkpoisearchdelegate
/**
*返回poi详情搜索结果
*@param searcher 搜索对象
*@param poidetailresult 详情搜索结果
*@param errorcode 错误码,@see bmksearcherrorcode
*/
-(void)ongetpoidetailresult:(bmkpoisearch*)searcher result:(bmkpoidetailsearchresult*)poidetailresult errorcode:(bmksearcherrorcode)errorcode {
//bmksearcherrorcode错误码,bmk_search_no_error:检索结果正常返回
if(errorcode ==bmk_search_no_error){
//在此处理正常结果
nslog(@"检索结果正常返回:%@",poidetailresult.poiinfolist);
}else{
nslog(@"其他检索结果错误码");
}
}
7. 处理检索返回的结果

通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的bmkpoidetailsearchpage。bmkpoidetailsearchresult类结构如下图:

说明:

bmkpoidetailsearchresultpoi详情检索结果类
bmkpoiinfopoi信息类
bmkpoidetailinfopoi详情信息类
nsarray *childrenpoi详情子节点信息,默认不返回,需要将scope字段设置为bmk_poi_scope_detail_information

上一篇

文字覆盖物

下一篇

地点输入提示检索

本篇文章对您是否有帮助?

网站地图