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

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
更新时间:2020-06-23
poi检索简介

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

poi城市内检索

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

实现步骤
1引入头文件

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

objective-c
swift
#import 
#import 
// 在桥接头文件bmkswiftdemo-bridging-header中添加
#import 
#import 
2初始化poi城市检索对象
objective-c
swift
bmkpoisearch *poisearch = [[bmkpoisearch alloc] init];
let poisearch = bmkpoisearch()
3设置poi城市检索代理
objective-c
swift
//此处需要先遵循协议
poisearch.delegate = self;
//此处需要先遵循协议
poisearch.delegate = self
4构造poi城市检索参数

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

objective-c
swift
//初始化请求参数类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; 
//初始化请求参数类bmkcitysearchoption的实例
let cityoption = bmkpoicitysearchoption()
//检索关键字,必选。举例:小吃
cityoption.keyword = "小吃"
//区域名称(市或区的名字,如北京市,海淀区),最长不超过25个字符,必选
cityoption.city = "北京市"
//检索分类,与keyword字段组合进行检索,多个分类以","分隔。举例:美食,酒店
cityoption.tags = ["美食","烧烤"]
//区域数据返回限制,可选,为true时,仅返回city对应区域内数据
cityoption.iscitylimit = true
/**
 poi检索结果详细程度
 
 bmk_poi_scope_basic_information: 基本信息
 bmk_poi_scope_detail_information: 详细信息
 */
//cityoption.scope = bmkpoisearchscopetype.bmk_poi_scope_detail_information
//检索过滤条件,scope字段为bmk_poi_scope_detail_information时,filter字段才有效
//cityoption.filter = option.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城市检索请求
objective-c
swift
bool flag = [poisearch poisearchincity:cityoption];
if(flag) {
    nslog(@"poi城市内检索成功");
} else {
    nslog(@"poi城市内检索失败");
} 
let flag = poisearch.poisearch(incity: cityoption)
if flag {
    nslog("poi城市内检索成功")
} else {
    nslog("poi城市内检索失败")
}
6实现代理方法,获取检索结果
objective-c
swift
#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);
    }  
    else if (errorcode == bmk_search_ambiguous_keyword) {   
        nslog(@"检索词有歧义");  
    } else {  
        nslog(@"其他检索结果错误码相关处理");  
    }  
}
/**
 poi检索返回结果回调
 
 @param searcher 检索对象
 @param poiresult poi检索结果列表
 @param error 错误码
 */
func ongetpoiresult(_ searcher: bmkpoisearch, result poiresult: bmkpoisearchresult, errorcode: bmksearcherrorcode) {
    if errorcode == bmk_search_no_error {
        //在此处理正常结果
        print("检索结果返回成功")
    }
    else if (errorcode == bmk_search_ambiguous_keyword) {
        print("检索词有歧义")
    } else {
        print("其他检索结果错误码相关处理")
    }
}
7处理检索返回的结果

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

说明:
bmkpoisearchresult     poi检索结果类

bmkpoiinfo                  poi信息类

bmkpoidetailinfo          poi详情信息类

nsarray *children     poi详情子节点信息,默认不返回,需要将scope字段设置为bmk_poi_scope_detail_information

poi周边(圆形区域)检索

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

实现步骤
1引入头文件

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

objective-c
swift
#import 
#import 
// 在桥接头文件bmkswiftdemo-bridging-header中添加
#import 
#import 
2初始化poi周边检索对象
objective-c
swift
bmkpoisearch *poisearch = [[bmkpoisearch alloc] init];
let poisearch = bmkpoisearch()
3设置poi周边检索代理
objective-c
swift
//此处需要先遵循协议
poisearch.delegate = self;
//此处需要先遵循协议
poisearch.delegate = self
4构造poi周边检索参数

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

objective-c
swift
//初始化请求参数类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;
//初始化请求参数类bmknearbysearchoption的实例
let nearbyoption = bmkpoinearbysearchoption()
/**
 检索关键字,必选。
 在周边检索中关键字为数组类型,可以支持多个关键字并集检索,如银行和酒店。每个关键字对应数组一个元素。
 最多支持10个关键字。
 */
nearbyoption.keywords = ["小吃"]
//检索中心点的经纬度,必选
nearbyoption.location = cllocationcoordinate2dmake(40.051231, 116.282051)
/**
 检索半径,单位是米。
 当半径过大,超过中心点所在城市边界时,会变为城市范围检索,检索范围为中心点所在城市
 */
nearbyoption.radius = 1000
/**
 检索分类,可选。
 该字段与keywords字段组合进行检索。
 支持多个分类,如美食和酒店。每个分类对应数组中一个元素
 */
nearbyoption.tags = ["美食"]
/**
 是否严格限定召回结果在设置检索半径范围内。默认值为false。
 值为true代表检索结果严格限定在半径范围内;值为false时不严格限定。
 注意:值为true时会影响返回结果中total准确性及每页召回poi数量,我们会逐步解决此类问题。
 */
nearbyoption.isradiuslimit = false
/**
 poi检索结果详细程度
 
 bmk_poi_scope_basic_information: 基本信息
 bmk_poi_scope_detail_information: 详细信息
 */
//nearbyoption.scope = bmkpoisearchscopetype.bmk_poi_scope_detail_information
//检索过滤条件,scope字段为bmk_poi_scope_detail_information时,filter字段才有效
//nearbyoption.filter = option.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周边检索请求
objective-c
swift
bool flag = [poisearch poisearchnearby:nearbyoption];
if (flag) {
    nslog(@"poi周边检索成功");
} else {
    nslog(@"poi周边检索失败");
}
/**
 根据中心点、半径和检索词发起周边检索:异步方法,返回结果在bmkpoisearchdelegate
 的ongetpoiresult里
 
 nearbyoption 周边搜索的搜索参数类
 成功返回yes,否则返回no
 */
let flag = poisearch.poisearchnear(by: nearbyoption)
if flag {
    print("poi周边检索成功")
} else {
    print("poi周边检索失败")
}
6实现代理方法,获取检索结果
objective-c
swift
#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);
    }  
    else if (errorcode == bmk_search_ambiguous_keyword) {   
        nslog(@"检索词有歧义");  
    } else {  
        nslog(@"其他检索结果错误码相关处理");  
    }  
}
/**
 poi检索返回结果回调
 
 @param searcher 检索对象
 @param poiresult poi检索结果列表
 @param error 错误码
 */
func ongetpoiresult(_ searcher: bmkpoisearch, result poiresult: bmkpoisearchresult, errorcode: bmksearcherrorcode) {
    if errorcode == bmk_search_no_error {
        //在此处理正常结果
        print("检索结果返回成功")
    }
    else if (errorcode == bmk_search_ambiguous_keyword) {
        print("检索词有歧义")
    } else {
        print("其他检索结果错误码相关处理")
    }
}
7处理检索返回的结果

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

说明:
bmkpoisearchresult     poi检索结果类

bmkpoiinfo                   poi信息类

bmkpoidetailinfo          poi详情信息类

nsarray *children     poi详情子节点信息,默认不返回,需要将scope字段设置为bmk_poi_scope_detail_information

poi矩形区域检索

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

实现步骤
1引入头文件

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

objective-c
swift
#import 
#import 
// 在桥接头文件bmkswiftdemo-bridging-header中添加
#import 
#import 
2初始化poi矩形区域检索对象
objective-c
swift
bmkpoisearch *poisearch = [[bmkpoisearch alloc] init];
let poisearch = bmkpoisearch()
3设置poi矩形区域检索代理
objective-c
swift
//此处需要先遵循协议
poisearch.delegate = self;
//此处需要先遵循协议
poisearch.delegate = self
4构造poi矩形区域检索参数

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

objective-c
swift
//初始化请求参数类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;
//初始化请求参数类bmkboundsearchoption的实例
let boundoption = bmkpoiboundsearchoption()
/**
 检索关键字,必选。
 在矩形检索中关键字为数组类型,可以支持多个关键字并集检索,如银行和酒店。每个关键字对应数组一个元素。
 最多支持10个关键字。
 */
boundoption.keywords = ["小吃"]
//矩形检索区域的左下角经纬度坐标,必选
boundoption.leftbottom = cllocationcoordinate2dmake(40.049557, 116.279295)
//矩形检索区域的右上角经纬度坐标,必选
boundoption.righttop = cllocationcoordinate2dmake(40.056057, 116.308102)
/**
 检索分类
 该字段与keywords字段组合进行检索。
 支持多个分类,如美食和酒店。每个分类对应数组中一个元素
 */
boundoption.tags = ["美食"]
/**
 poi检索结果详细程度
 
 bmk_poi_scope_basic_information: 基本信息
 bmk_poi_scope_detail_information: 详细信息
 */
//boundoption.scope = bmkpoisearchscopetype.bmk_poi_scope_detail_information
//检索过滤条件,scope字段为bmk_poi_scope_detail_information时,filter字段才有效
//boundoption.filter = option.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矩形区域检索请求
objective-c
swift
bool flag = [poisearch poisearchinbounds:boundoption];
if(flag) {
    nslog(@"poi矩形区域内检索成功");
} else {
    nslog(@"poi矩形区域内检索失败");
}
/**
 根据范围和检索词发起范围检索:异步方法,返回结果在bmkpoisearchdelegate
 的ongetpoiresult里
 
 boundoption 范围搜索的搜索参数类
 成功返回yes,否则返回no
 */
let flag = poisearch.poisearchinbounds(boundoption)
if flag {
    print("poi区域内检索成功")
} else {
    print("poi区域内检索失败")
}
6实现代理方法,获取检索结果
objective-c
swift
#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);
    }  
    else if (errorcode == bmk_search_ambiguous_keyword) {   
        nslog(@"检索词有歧义");  
    } else {  
        nslog(@"其他检索结果错误码相关处理");  
    }  
}
/**
 poi检索返回结果回调
 
 @param searcher 检索对象
 @param poiresult poi检索结果列表
 @param error 错误码
 */
func ongetpoiresult(_ searcher: bmkpoisearch, result poiresult: bmkpoisearchresult, errorcode: bmksearcherrorcode) {
    if errorcode == bmk_search_no_error {
        //在此处理正常结果
        print("检索结果返回成功")
    }
    else if (errorcode == bmk_search_ambiguous_keyword) {
        print("检索词有歧义")
    } else {
        print("其他检索结果错误码相关处理")
    }
}
7处理检索返回的结果

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

说明:
bmkpoisearchresult      poi检索结果类

bmkpoiinfo                    poi信息类

bmkpoidetailinfo           poi详情信息类

nsarray *children     poi详情子节点信息,默认不返回,需要将scope字段设置为bmk_poi_scope_detail_information


poi室内检索

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

实现步骤
1引入头文件

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

objective-c
swift
#import 
#import 
// 在桥接头文件bmkswiftdemo-bridging-header中添加
#import 
#import 
2初始化poi室内检索对象
objective-c
swift
bmkpoisearch *poisearch = [[bmkpoisearch alloc] init];
let poisearch = bmkpoisearch()
3设置poi室内检索代理
objective-c
swift
//此处需要先遵循协议
poisearch.delegate = self;
//此处需要先遵循协议
poisearch.delegate = self
4构造poi室内检索参数

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

objective-c
swift
//初始化请求参数类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;
//初始化请求参数类bmkpoiindoorsearchoption的实例
let indooroption = bmkpoiindoorsearchoption()
/**
*室内检索唯一标识符,必选
*开启室内地图,在代理方法
*-(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室内检索请求
objective-c
swift
bool flag = [poisearch poiindoorsearch:indooroption];
if(flag) {
    nslog(@"poi室内检索成功");
} else {
    nslog(@"poi室内检索失败");
}
let flag = poisearch.poiindoorsearch(indooroption)
if flag {
    nslog("poi室内检索成功")
} else {
    nslog("poi室内检索失败")
}
6实现代理方法,获取检索结果
objective-c
swift
#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);
    }  
    else if (errorcode == bmk_search_ambiguous_keyword) {   
        nslog(@"检索词有歧义");  
    } else {  
        nslog(@"其他检索结果错误码");  
    }   
}
/**
 poi室内检索结果回调
 
 @param searcher 检索对象
 @param poiindoorresult poi室内检索结果
 @param errorcode 错误码,@see bmkclouderrorcode
 */
func ongetpoiindoorresult(_ searcher: bmkpoisearch!, result poiindoorresult: bmkpoiindoorsearchresult!, errorcode: bmksearcherrorcode) {
    if errorcode == bmk_search_no_error {
        //在此处理正常结果
        print("检索结果返回成功")
    }
    else if (errorcode == bmk_search_ambiguous_keyword) {
        print("检索词有歧义")
    } else {
        print("其他检索结果错误码相关处理")
    }
}
7处理检索返回的结果

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

说明:
bmkpoisearchresult     poi室内检索结果类

bmkpoiindoorinfo          poi信息类

bmkpoidetailinfo          室内poi信息类


注意: 1.室内地图默认是关闭的,检索室内poi需要打开室内地图功能。 2.室内地图需要显示在屏幕范围内,才支持检索当前室内地图的室内poi。


poi详情检索

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

实现步骤
1引入头文件

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

objective-c
swift
#import 
#import 
// 在桥接头文件bmkswiftdemo-bridging-header中添加
#import 
#import 
2初始化poi详情检索对象
objective-c
swift
bmkpoisearch *poisearch = [[bmkpoisearch alloc] init];
let poisearch = bmkpoisearch()
3设置poi详情检索代理
objective-c
swift
//此处需要先遵循协议
poisearch.delegate = self;
//此处需要先遵循协议
poisearch.delegate = self
4构造poi详情检索参数
objective-c
swift
//初始化请求参数类bmkpoidetailsearchoption的实例
bmkpoidetailsearchoption *detailoption = [[bmkpoidetailsearchoption alloc] init];
//poi的唯一标识符集合,必选
detailoption.poiuids = @[@"ba97895c02a6ddc7f60e775f"];
//poi检索结果详细程度
//detailoption.scope = bmk_poi_scope_basic_information;
//初始化请求参数类bmkpoidetailsearchoption的实例
let detailoption = bmkpoidetailsearchoption()
//poi的唯一标识符集合,必选
detailoption.poiuids = ["ba97895c02a6ddc7f60e775f"]
/**
 poi检索结果详细程度
 
 bmk_poi_scope_basic_information: 基本信息
 bmk_poi_scope_detail_information: 详细信息
 */
//detailoption.scope = bmkpoisearchscopetype.bmk_poi_scope_detail_information
5发起poi详情检索请求
objective-c
swift
bool flag = [poisearch poidetailsearch:detailoption];
if(flag) {
    nslog(@"poi详情检索成功");
} else {
    nslog(@"poi详情检索失败");
}
/**
 根据poi uid 发起poi详情检索:异步方法,返回结果在bmkpoisearchdelegate
 的ongetpoidetailresult里
 detailoption poi详情检索参数类
 成功返回yes,否则返回no
 */
let flag = poisearch.poidetailsearch(detailoption)
if flag {
    print("poi详情检索成功")
} else {
    print("poi详情检索失败")
}
6实现代理方法,获取检索结果
objective-c
swift
#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(@"其他检索结果错误码");
    }
}
/**
 poi详情检索结果回调
 
 @param searcher 检索对象
 @param poidetailresult poi详情检索结果
 @param errorcode 错误码,@see bmkclouderrorcode
 */
func ongetpoidetailresult(_ searcher: bmkpoisearch!, result poidetailresult: bmkpoidetailsearchresult!, errorcode: bmksearcherrorcode) {
    if errorcode == bmk_search_no_error {
        //在此处理正常结果
        print("检索结果返回成功")
    }
    else if (errorcode == bmk_search_ambiguous_keyword) {
        print("检索词有歧义")
    } else {
        print("其他检索结果错误码相关处理")
    }
}
7处理检索返回的结果

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

说明:
bmkpoidetailsearchresult    poi详情检索结果类

bmkpoiinfo                          poi信息类

bmkpoidetailinfo                 poi详情信息类

nsarray *children    poi详情子节点信息,默认不返回,需要将scope字段设置为bmk_poi_scope_detail_information

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消

"));
网站地图