浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
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 <BaiduMapAPI_Base/BMKBaseComponent.h>
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
// 在桥接头文件BMKSwiftDemo-Bridging-Header中添加
#import <BaiduMapAPI_Base/BMKBaseComponent.h>
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
2初始化POI城市检索对象
Objective-C
Swift
BMKPoiSearch *poiSearch = [[BMKPoiSearch alloc] init];
let poiSearch = BMKPoiSearch()
3设置POI城市检索代理
Objective-C
Swift
//此处需要先遵循协议<BMKPoiSearchDelegate>
poiSearch.delegate = self;
//此处需要先遵循协议<BMKPoiSearchDelegate>
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城市检索请求