poi(point of interest),中文可以翻译为“兴趣点”。在地理信息系统中,一个poi可以是一栋房子、一个商铺、一个邮筒、一个公交站等。 百度地图sdk提供五种类型的poi检索:poi城市检索、poi周边检索、poi矩形区域检索、poi室内检索以及poi详情检索。
城市检索是根据关键字检索适用于在「某个行政区划,如北京市、四川省等」搜索某个名称相关的poi,例如:查找北京市的“小吃”。
poi城市检索功能使用的是地图sdk的检索功能,需要在工程中导入检索功能包baidumapapi_search.framework
#import<baidumapapi_base/bmkbasecomponent.h>#import<baidumapapi_search/bmksearchcomponent.h>
bmkpoisearch*poisearch =[[bmkpoisearch alloc] init];
//此处需要先遵循协议poisearch.delegate= self;
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;
bool flag =[poisearch poisearchincity:cityoption];if(flag){nslog(@"poi城市内检索成功");}else{nslog(@"poi城市内检索失败");}
#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(@"其他检索结果错误码相关处理");}}
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的bmkpoicitysearchpage。 bmkpoisearchresult类结构如下图:
说明:
bmkpoisearchresult | poi检索结果类 | ||
bmkpoiinfo | poi信息类 | ||
bmkpoidetailinfo | poi详情信息类 | ||
nsarray | poi详情子节点信息,默认不返回,需要将scope字段设置为bmk_poi_scope_detail_information |
周边检索是一个圆形范围,适用于以某个位置为中心点,自定义检索半径值,搜索某个位置附近的poi。例如:查找当前位置(40.051231, 116.282051)附近1000米范围内的“小吃”。
poi周边检索功能使用的是地图sdk的检索功能,需要在工程中导入检索功能包baidumapapi_search.framework
#import<baidumapapi_base/bmkbasecomponent.h>#import<baidumapapi_search/bmksearchcomponent.h>
bmkpoisearch*poisearch =[[bmkpoisearch alloc] init];
//此处需要先遵循协议poisearch.delegate= self;
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;
bool flag =[poisearch poisearchnearby:nearbyoption];if(flag){nslog(@"poi周边检索成功");}else{nslog(@"poi周边检索失败");}
#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(@"其他检索结果错误码相关处理");}}
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的bmkpoinearbysearchpage,bmkpoisearchresult类结构如下图:
说明:
bmkpoisearchresult | poi检索结果类 | ||
bmkpoiinfo | poi信息类 | ||
bmkpoidetailinfo | poi详情信息类 | ||
nsarray | poi详情子节点信息,默认不返回,需要将scope字段设置为bmk_poi_scope_detail_information |
poi矩形区域检索是在指定的绘制的矩形范围内(依据左下角坐标和右上角坐标绘制的矩形范围)检索poi。
poi矩形区域检索功能使用的是地图sdk的检索功能,需要在工程中导入检索功能包baidumapapi_search.framework
#import<baidumapapi_base/bmkbasecomponent.h>#import<baidumapapi_search/bmksearchcomponent.h>
bmkpoisearch*poisearch =[[bmkpoisearch alloc] init];
//此处需要先遵循协议poisearch.delegate= self;
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;
bool flag =[poisearch poisearchinbounds:boundoption];if(flag){nslog(@"poi矩形区域内检索成功");}else{nslog(@"poi矩形区域内检索失败");}
#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(@"其他检索结果错误码相关处理");}}
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的bmkpoiboundssearchpage。bmkpoisearchresult类结构如下图
说明:
bmkpoisearchresult | poi检索结果类 | ||
bmkpoiinfo | poi信息类 | ||
bmkpoidetailinfo | poi详情信息类 | ||
nsarray | poi详情子节点信息,默认不返回,需要将scope字段设置为bmk_poi_scope_detail_information |
poi室内检索是指检索室内地图上的poi,输入室内id和关键字后,返回室内地图内的poi的点。
poi室内检索功能使用的是地图sdk的检索功能,需要在工程中导入检索功能包baidumapapi_search.framework
#import<baidumapapi_base/bmkbasecomponent.h>#import<baidumapapi_search/bmksearchcomponent.h>
bmkpoisearch*poisearch =[[bmkpoisearch alloc] init];
//此处需要先遵循协议poisearch.delegate= self;
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;
bool flag =[poisearch poiindoorsearch:indooroption];if(flag){nslog(@"poi室内检索成功");}else{nslog(@"poi室内检索失败");}
#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(@"其他检索结果错误码");}}
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的bmkpoiindoorsearchpage。bmkpoiindoorsearchresult类结构如下图:
说明:
bmkpoisearchresult | poi室内检索结果类 | ||
bmkpoiindoorinfo | poi信息类 | ||
bmkpoidetailinfo | 室内poi信息类 |
注意: 1.室内地图默认是关闭的,检索室内poi需要打开室内地图功能。
2.室内地图需要显示在屏幕范围内,才支持检索当前室内地图的室内poi。
poi详情检索提供查询单个poi的详情信息,比如好评、门店营业时间等。
poi详情检索功能使用的是地图sdk的检索功能,需要在工程中导入检索功能包baidumapapi_search.framework
#import<baidumapapi_base/bmkbasecomponent.h>#import<baidumapapi_search/bmksearchcomponent.h>
bmkpoisearch*poisearch =[[bmkpoisearch alloc] init];
//此处需要先遵循协议poisearch.delegate= self;
//初始化请求参数类bmkpoidetailsearchoption的实例bmkpoidetailsearchoption*detailoption =[[bmkpoidetailsearchoption alloc] init];//poi的唯一标识符集合,必选detailoption.poiuids= @[@"ba97895c02a6ddc7f60e775f"];//poi检索结果详细程度//detailoption.scope = bmk_poi_scope_basic_information;
bool flag =[poisearch poidetailsearch:detailoption];if(flag){nslog(@"poi详情检索成功");}else{nslog(@"poi详情检索失败");}
#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(@"其他检索结果错误码");}}
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的bmkpoidetailsearchpage。bmkpoidetailsearchresult类结构如下图:
说明:
bmkpoidetailsearchresult | poi详情检索结果类 | ||
bmkpoiinfo | poi信息类 | ||
bmkpoidetailinfo | poi详情信息类 | ||
nsarray | poi详情子节点信息,默认不返回,需要将scope字段设置为bmk_poi_scope_detail_information |
上一篇
下一篇
本篇文章对您是否有帮助?