浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
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城市检索代理
//此处需要先遵循协议<BMKPoiSearchDelegate>
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);
    }  
    else if (errorCode == BMK_SEARCH_AMBIGUOUS_KEYWORD) {   
        NSLog(@"检索词有歧义");  
    } else {  
        NSLog(@"其他检索结果错误码相关处理");  
    }  
}
7处理检索返回的结果

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

BMKPoiInfo                  POI信息类

BMKPOIDetailInfo          POI详情信息类

NSArray <BMKPOIDetailChildrenInfo *> *children     POI详情子节点信息,默认不返回,需要权限


注意:POI详情子节点信息,默认不返回,需要额外申请权限,首先需要进行企业认证, 之后需要提交工单申请这个权限, 并详细说明使用场景, 包括但不限于, 使用开放平台哪些产品及服务, 应用在贵方哪些产品及应用上以及该产品或应用的相关介绍, 预估使用预估使用配额多少等。另外需附带AK信息。

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城市检索代理
//此处需要先遵循协议<BMKPoiSearchDelegate>
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);
    }  
    else if (errorCode == BMK_SEARCH_AMBIGUOUS_KEYWORD) {   
        NSLog(@"检索词有歧义");  
    } else {  
        NSLog(@"其他检索结果错误码");  
    }   
}  
7处理检索返回的结果

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

BMKPoiInfo                   POI信息类

BMKPOIDetailInfo          POI详情信息类

NSArray<BMKPOIDetailChildrenInfo *> *children     POI详情子节点信息,默认不返回,需要权限


注意:POI详情子节点信息,默认不返回,需要额外申请权限,首先需要进行企业认证, 之后需要提交工单申请这个权限, 并详细说明使用场景, 包括但不限于, 使用开放平台哪些产品及服务, 应用在贵方哪些产品及应用上以及该产品或应用的相关介绍, 预估使用配额多少等。另外需附带AK信息。


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矩形区域检索代理
//此处需要先遵循协议<BMKPoiSearchDelegate>
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);  
    }  
    else if (errorCode == BMK_SEARCH_AMBIGUOUS_KEYWORD) {   
        NSLog(@"检索词有歧义");  
    } else {  
        NSLog(@"其他检索结果错误码");  
    }   
}  
7处理检索返回的结果

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

BMKPoiInfo                    POI信息类

BMKPOIDetailInfo           POI详情信息类

NSArray <BMKPOIDetailChildrenInfo *> *children         POI详情子节点信息,默认不返回,需要权限


注意:POI详情子节点信息,默认不返回,需要额外申请权限,首先需要进行企业认证, 之后需要提交工单申请这个权限, 并详细说明使用场景, 包括但不限于, 使用开放平台哪些产品及服务, 应用在贵方哪些产品及应用上以及该产品或应用的相关介绍, 预估使用配额多少等。另外需附带AK信息。


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室内检索代理
//此处需要先遵循协议<BMKPoiSearchDelegate>
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;

注意:scope字段默认为基本信息BMK_POI_SCOPE_BASIC_INFORMATION,如果要使用检索过滤条件filter字段,需要将scope字段设置为详细信息BMK_POI_SCOPE_DETAIL_INFORMATION。

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);
    }  
    else if (errorCode == BMK_SEARCH_AMBIGUOUS_KEYWORD) {   
        NSLog(@"检索词有歧义");  
    } else {  
        NSLog(@"其他检索结果错误码");  
    }   
}
7处理检索返回的结果

通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKPOIIndoorSearchPage。BMKPOIIndoorSearchResult类结构如下图:
PoiIndoor.png
说明:
BMKPOISearchResult     POI室内检索结果类

BMKPoiIndoorInfo          POI信息类

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类结构如下图:
PoiDetail.png
说明:
BMKPOIDetailSearchResult    POI详情检索结果类

BMKPoiInfo                          POI信息类

BMKPOIDetailInfo                 POI详情信息类

NSArray <BMKPOIDetailChildrenInfo *> *children    POI详情子节点信息,默认不返回,需要权限
注意:POI详情子节点信息,默认不返回,需要额外申请权限,首先需要进行企业认证, 之后需要提交工单申请这个权限, 并详细说明使用场景, 包括但不限于, 使用开放平台哪些产品及服务, 应用在贵方哪些产品及应用上以及该产品或应用的相关介绍, 预估使用配额多少等。另外需附带AK信息。


  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

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

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消