浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
 
第6行: 第6行:
 
<div class="bluetitle"><div class="services-title-text">实现步骤</div></div><div class="devguide"><div class="leftborderbg" style="height:990px"></div><div class="devguideorder"><span>1</span>引入头文件</div><div class="devguidecenter">
 
<div class="bluetitle"><div class="services-title-text">实现步骤</div></div><div class="devguide"><div class="leftborderbg" style="height:990px"></div><div class="devguideorder"><span>1</span>引入头文件</div><div class="devguidecenter">
 
POI城市检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framework
 
POI城市检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framework
<pre class="prettyprint codestyle">#import <BaiduMapAPI_Base/BMKBaseComponent.h>
+
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">#import <BaiduMapAPI_Base/BMKBaseComponent.h>
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
+
#import <BaiduMapAPI_Search/BMKSearchComponent.h></pre>
</pre>
+
<pre class="code_item prettyprint codestyle">// 在桥接头文件BMKSwiftDemo-Bridging-Header中添加
</div><div class="devguideorder"><span>2</span>初始化POI城市检索对象</div><div class="devguidecenter"><pre class="prettyprint codestyle">BMKPoiSearch *poiSearch = [[BMKPoiSearch alloc] init];
+
#import <BaiduMapAPI_Base/BMKBaseComponent.h>
</pre>
+
#import <BaiduMapAPI_Search/BMKSearchComponent.h></pre>
</div><div class="devguideorder"><span>3</span>设置POI城市检索代理</div><div class="devguidecenter"><pre class="prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
+
</div></div></div><div class="devguideorder"><span>2</span>初始化POI城市检索对象</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">BMKPoiSearch *poiSearch = [[BMKPoiSearch alloc] init];</pre>
poiSearch.delegate = self;
+
<pre class="code_item prettyprint codestyle">let poiSearch = BMKPoiSearch()</pre>
</pre>
+
</div></div></div><div class="devguideorder"><span>3</span>设置POI城市检索代理</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
</div><div class="devguideorder"><span>4</span>构造POI城市检索参数</div><div class="devguidecenter">
+
poiSearch.delegate = self;</pre>
 +
<pre class="code_item prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
 +
poiSearch.delegate = self</pre>
 +
</div></div></div><div class="devguideorder"><span>4</span>构造POI城市检索参数</div><div class="devguidecenter">
 
BMKPOICitySearchOption 中tags字段可参考文档[http://lbsyun.baidu.com/index.php?title=lbscloud/poitags 百度地图POI行业分类]
 
BMKPOICitySearchOption 中tags字段可参考文档[http://lbsyun.baidu.com/index.php?title=lbscloud/poitags 百度地图POI行业分类]
<pre class="prettyprint codestyle">//初始化请求参数类BMKCitySearchOption的实例
+
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">//初始化请求参数类BMKCitySearchOption的实例
 
BMKPOICitySearchOption *cityOption = [[BMKPOICitySearchOption alloc] init];
 
BMKPOICitySearchOption *cityOption = [[BMKPOICitySearchOption alloc] init];
 
//检索关键字,必选。举例:小吃
 
//检索关键字,必选。举例:小吃
第33行: 第36行:
 
cityOption.pageIndex = 0;
 
cityOption.pageIndex = 0;
 
//单次召回POI数量,默认为10条记录,最大返回20条
 
//单次召回POI数量,默认为10条记录,最大返回20条
cityOption.pageSize = 10;  
+
cityOption.pageSize = 10; </pre>
</pre>
+
<pre class="code_item prettyprint codestyle">//初始化请求参数类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</pre>
 +
</div></div>
 
<span style="color:#FF0000;">注意:scope字段默认为基本信息BMK_POI_SCOPE_BASIC_INFORMATION,如果要使用检索过滤条件filter字段,需要将scope字段设置为详细信息BMK_POI_SCOPE_DETAIL_INFORMATION。</span>
 
<span style="color:#FF0000;">注意:scope字段默认为基本信息BMK_POI_SCOPE_BASIC_INFORMATION,如果要使用检索过滤条件filter字段,需要将scope字段设置为详细信息BMK_POI_SCOPE_DETAIL_INFORMATION。</span>
</div><div class="devguideorder"><span>5</span>发起POI城市检索请求</div><div class="devguidecenter"><pre class="prettyprint codestyle">BOOL flag = [poiSearch poiSearchInCity:cityOption];
+
</div><div class="devguideorder"><span>5</span>发起POI城市检索请求</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">BOOL flag = [poiSearch poiSearchInCity:cityOption];
 
if(flag) {
 
if(flag) {
 
     NSLog(@"POI城市内检索成功");
 
     NSLog(@"POI城市内检索成功");
 
} else {
 
} else {
 
     NSLog(@"POI城市内检索失败");
 
     NSLog(@"POI城市内检索失败");
}  
+
} </pre>
</pre>
+
<pre class="code_item prettyprint codestyle">let flag = poiSearch.poiSearch(inCity: cityOption)
</div><div class="devguideorder"><span>6</span>实现代理方法,获取检索结果</div><div class="devguidecenter"><pre class="prettyprint codestyle">#pragma mark - BMKPoiSearchDelegate
+
if flag {
 +
    NSLog("POI城市内检索成功")
 +
} else {
 +
    NSLog("POI城市内检索失败")
 +
}</pre>
 +
</div></div></div><div class="devguideorder"><span>6</span>实现代理方法,获取检索结果</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">#pragma mark - BMKPoiSearchDelegate
 
/**
 
/**
 
  *返回POI搜索结果
 
  *返回POI搜索结果
第62行: 第92行:
 
         NSLog(@"其他检索结果错误码相关处理");   
 
         NSLog(@"其他检索结果错误码相关处理");   
 
     }   
 
     }   
}
+
}</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">/**
</div><div class="devguideorder"><span>7</span>处理检索返回的结果</div><div class="devguidecenter">
+
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("其他检索结果错误码相关处理")
 +
    }
 +
}</pre>
 +
</div></div></div><div class="devguideorder"><span>7</span>处理检索返回的结果</div><div class="devguidecenter">
 
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKPOICitySearchPage。 BMKPOISearchResult类结构如下图:<br/>http://mapopen-pub-iossdk.cdn.bcebos.com/map/img/poiCity.png<br/>说明:<br/>BMKPOISearchResult &nbsp; &nbsp; POI检索结果类
 
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKPOICitySearchPage。 BMKPOISearchResult类结构如下图:<br/>http://mapopen-pub-iossdk.cdn.bcebos.com/map/img/poiCity.png<br/>说明:<br/>BMKPOISearchResult &nbsp; &nbsp; POI检索结果类
  
第71行: 第118行:
 
BMKPOIDetailInfo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;POI详情信息类
 
BMKPOIDetailInfo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;POI详情信息类
  
NSArray &lt;BMKPOIDetailChildrenInfo *&gt; *children &nbsp; &nbsp; POI详情子节点信息,默认不返回,需要权限
+
NSArray&lt;BMKPOIDetailChildrenInfo *&gt; *children &nbsp; &nbsp; POI详情子节点信息,默认不返回,需要将scope字段设置为BMK_POI_SCOPE_DETAIL_INFORMATION
 
+
<br/><span style="color:#FF0000;">注意:POI详情子节点信息,默认不返回,需要额外申请权限,首先需要进行企业认证, 之后需要提交工单申请这个权限, 并详细说明使用场景, 包括但不限于, 使用开放平台哪些产品及服务, 应用在贵方哪些产品及应用上以及该产品或应用的相关介绍, 预估使用预估使用配额多少等。另外需附带AK信息。</span>
+
 
</div></div><div class="bluetitle"><div class="services-title-text">POI周边(圆形区域)检索</div></div>
 
</div></div><div class="bluetitle"><div class="services-title-text">POI周边(圆形区域)检索</div></div>
 
周边检索是一个圆形范围,适用于以某个位置为中心点,自定义检索半径值,搜索某个位置附近的POI。例如:查找当前位置(40.051231, 116.282051)附近1000米范围内的“小吃”。
 
周边检索是一个圆形范围,适用于以某个位置为中心点,自定义检索半径值,搜索某个位置附近的POI。例如:查找当前位置(40.051231, 116.282051)附近1000米范围内的“小吃”。
 
<div class="bluetitle"><div class="services-title-text">实现步骤</div></div><div class="devguide"><div class="leftborderbg" style="height:990px"></div><div class="devguideorder"><span>1</span>引入头文件</div><div class="devguidecenter">
 
<div class="bluetitle"><div class="services-title-text">实现步骤</div></div><div class="devguide"><div class="leftborderbg" style="height:990px"></div><div class="devguideorder"><span>1</span>引入头文件</div><div class="devguidecenter">
 
POI周边检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framework
 
POI周边检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framework
<pre class="prettyprint codestyle">#import <BaiduMapAPI_Base/BMKBaseComponent.h>
+
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">#import <BaiduMapAPI_Base/BMKBaseComponent.h>
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
+
#import <BaiduMapAPI_Search/BMKSearchComponent.h></pre>
</pre>
+
<pre class="code_item prettyprint codestyle">// 在桥接头文件BMKSwiftDemo-Bridging-Header中添加
</div><div class="devguideorder"><span>2</span>初始化POI周边检索对象</div><div class="devguidecenter"><pre class="prettyprint codestyle">BMKPoiSearch *poiSearch = [[BMKPoiSearch alloc] init];
+
#import <BaiduMapAPI_Base/BMKBaseComponent.h>
</pre>
+
#import <BaiduMapAPI_Search/BMKSearchComponent.h></pre>
</div><div class="devguideorder"><span>3</span>设置POI城市检索代理</div><div class="devguidecenter"><pre class="prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
+
</div></div></div><div class="devguideorder"><span>2</span>初始化POI周边检索对象</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">BMKPoiSearch *poiSearch = [[BMKPoiSearch alloc] init];</pre>
poiSearch.delegate = self;
+
<pre class="code_item prettyprint codestyle">let poiSearch = BMKPoiSearch()</pre>
</pre>
+
</div></div></div><div class="devguideorder"><span>3</span>设置POI周边检索代理</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
</div><div class="devguideorder"><span>4</span>构造POI周边检索参数</div><div class="devguidecenter">
+
poiSearch.delegate = self;</pre>
 +
<pre class="code_item prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
 +
poiSearch.delegate = self</pre>
 +
</div></div></div><div class="devguideorder"><span>4</span>构造POI周边检索参数</div><div class="devguidecenter">
 
BMKPOINearbySearchOption 中tags字段可参考文档[http://lbsyun.baidu.com/index.php?title=lbscloud/poitags 百度地图POI行业分类]
 
BMKPOINearbySearchOption 中tags字段可参考文档[http://lbsyun.baidu.com/index.php?title=lbscloud/poitags 百度地图POI行业分类]
<pre class="prettyprint codestyle">//初始化请求参数类BMKNearbySearchOption的实例
+
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">//初始化请求参数类BMKNearbySearchOption的实例
 
BMKPOINearbySearchOption *nearbyOption = [[BMKPOINearbySearchOption alloc] init];
 
BMKPOINearbySearchOption *nearbyOption = [[BMKPOINearbySearchOption alloc] init];
 
//检索关键字,必选
 
//检索关键字,必选
第107行: 第155行:
 
nearbyOption.pageIndex = 0;
 
nearbyOption.pageIndex = 0;
 
//单次召回POI数量,默认为10条记录,最大返回20条。
 
//单次召回POI数量,默认为10条记录,最大返回20条。
nearbyOption.pageSize = 10;
+
nearbyOption.pageSize = 10;</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">//初始化请求参数类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</pre>
 +
</div></div>
 
<span style="color:#FF0000;">注意:scope字段默认为基本信息BMK_POI_SCOPE_BASIC_INFORMATION,如果要使用检索过滤条件filter字段,需要将scope字段设置为详细信息BMK_POI_SCOPE_DETAIL_INFORMATION。</span>
 
<span style="color:#FF0000;">注意:scope字段默认为基本信息BMK_POI_SCOPE_BASIC_INFORMATION,如果要使用检索过滤条件filter字段,需要将scope字段设置为详细信息BMK_POI_SCOPE_DETAIL_INFORMATION。</span>
</div><div class="devguideorder"><span>5</span>发起POI周边检索请求</div><div class="devguidecenter"><pre class="prettyprint codestyle">BOOL flag = [poiSearch poiSearchNearBy:nearbyOption];
+
</div><div class="devguideorder"><span>5</span>发起POI周边检索请求</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">BOOL flag = [poiSearch poiSearchNearBy:nearbyOption];
 
if (flag) {
 
if (flag) {
 
     NSLog(@"POI周边检索成功");
 
     NSLog(@"POI周边检索成功");
 
} else {
 
} else {
 
     NSLog(@"POI周边检索失败");
 
     NSLog(@"POI周边检索失败");
}
+
}</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">/**
</div><div class="devguideorder"><span>6</span>实现代理方法,获取检索结果</div><div class="devguidecenter"><pre class="prettyprint codestyle">#pragma mark - BMKPoiSearchDelegate
+
根据中心点、半径和检索词发起周边检索:异步方法,返回结果在BMKPoiSearchDelegate
 +
的onGetPoiResult里
 +
 +
nearbyOption 周边搜索的搜索参数类
 +
成功返回YES,否则返回NO
 +
*/
 +
let flag = poiSearch.poiSearchNear(by: nearbyOption)
 +
if flag {
 +
    print("POI周边检索成功")
 +
} else {
 +
    print("POI周边检索失败")
 +
}</pre>
 +
</div></div></div><div class="devguideorder"><span>6</span>实现代理方法,获取检索结果</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">#pragma mark - BMKPoiSearchDelegate
 
/**
 
/**
 
  *返回POI搜索结果
 
  *返回POI搜索结果
第125行: 第224行:
 
  *@param errorCode 错误码,@see BMKSearchErrorCode
 
  *@param errorCode 错误码,@see BMKSearchErrorCode
 
  */
 
  */
- (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPOISearchResult*)poiResult errorCode:(BMKSearchErrorCode)errorCode{   
+
- (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPOISearchResult*)poiResult errorCode:(BMKSearchErrorCode)errorCode {   
 
     //BMKSearchErrorCode错误码,BMK_SEARCH_NO_ERROR:检索结果正常返回
 
     //BMKSearchErrorCode错误码,BMK_SEARCH_NO_ERROR:检索结果正常返回
 
     if (errorCode == BMK_SEARCH_NO_ERROR) {   
 
     if (errorCode == BMK_SEARCH_NO_ERROR) {   
第134行: 第233行:
 
         NSLog(@"检索词有歧义");   
 
         NSLog(@"检索词有歧义");   
 
     } else {   
 
     } else {   
         NSLog(@"其他检索结果错误码");   
+
         NSLog(@"其他检索结果错误码相关处理");   
     }  
+
     }
}   
+
}</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">/**
</div><div class="devguideorder"><span>7</span>处理检索返回的结果</div><div class="devguidecenter">
+
  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("其他检索结果错误码相关处理")
 +
    }
 +
}</pre>
 +
</div></div></div><div class="devguideorder"><span>7</span>处理检索返回的结果</div><div class="devguidecenter">
 
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKPOINearbySearchPage,BMKPOISearchResult类结构如下图:<br/>http://mapopen-pub-iossdk.cdn.bcebos.com/map/img/PoiNearby.png<br/>说明:<br/>BMKPOISearchResult &nbsp; &nbsp; POI检索结果类
 
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKPOINearbySearchPage,BMKPOISearchResult类结构如下图:<br/>http://mapopen-pub-iossdk.cdn.bcebos.com/map/img/PoiNearby.png<br/>说明:<br/>BMKPOISearchResult &nbsp; &nbsp; POI检索结果类
  
第145行: 第261行:
 
BMKPOIDetailInfo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;POI详情信息类
 
BMKPOIDetailInfo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;POI详情信息类
  
NSArray&lt;BMKPOIDetailChildrenInfo *&gt; *children &nbsp; &nbsp; POI详情子节点信息,默认不返回,需要权限
+
NSArray&lt;BMKPOIDetailChildrenInfo *&gt; *children &nbsp; &nbsp; POI详情子节点信息,默认不返回,需要将scope字段设置为BMK_POI_SCOPE_DETAIL_INFORMATION
 
+
</div><div class="bluetitle"><div class="services-title-text">POI矩形区域检索</div></div>
<br/><span style="color:#FF0000;">注意:POI详情子节点信息,默认不返回,需要额外申请权限,首先需要进行企业认证, 之后需要[http://lbsyun.baidu.com/index.php?title=FAQ/tags 提交工单]申请这个权限, 并详细说明使用场景, 包括但不限于, 使用开放平台哪些产品及服务, 应用在贵方哪些产品及应用上以及该产品或应用的相关介绍, 预估使用配额多少等。另外需附带AK信息。</span>
+
 
+
 
+
</div></div><div class="bluetitle"><div class="services-title-text">POI矩形区域检索</div></div>
+
 
POI矩形区域检索是在指定的绘制的矩形范围内(依据左下角坐标和右上角坐标绘制的矩形范围)检索POI。
 
POI矩形区域检索是在指定的绘制的矩形范围内(依据左下角坐标和右上角坐标绘制的矩形范围)检索POI。
 
<div class="bluetitle"><div class="services-title-text">实现步骤</div></div><div class="devguide"><div class="leftborderbg" style="height:990px"></div><div class="devguideorder"><span>1</span>引入头文件</div><div class="devguidecenter">
 
<div class="bluetitle"><div class="services-title-text">实现步骤</div></div><div class="devguide"><div class="leftborderbg" style="height:990px"></div><div class="devguideorder"><span>1</span>引入头文件</div><div class="devguidecenter">
 
POI矩形区域检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framework
 
POI矩形区域检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framework
<pre class="prettyprint codestyle">#import <BaiduMapAPI_Base/BMKBaseComponent.h>
+
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">#import <BaiduMapAPI_Base/BMKBaseComponent.h>
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
+
#import <BaiduMapAPI_Search/BMKSearchComponent.h></pre>
</pre>
+
<pre class="code_item prettyprint codestyle">// 在桥接头文件BMKSwiftDemo-Bridging-Header中添加
</div><div class="devguideorder"><span>2</span>初始化POI矩形区域检索对象</div><div class="devguidecenter"><pre class="prettyprint codestyle">BMKPoiSearch *poiSearch = [[BMKPoiSearch alloc] init];
+
#import <BaiduMapAPI_Base/BMKBaseComponent.h>
</pre>
+
#import <BaiduMapAPI_Search/BMKSearchComponent.h></pre>
</div><div class="devguideorder"><span>3</span>设置POI矩形区域检索代理</div><div class="devguidecenter"><pre class="prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
+
</div></div></div><div class="devguideorder"><span>2</span>初始化POI矩形区域检索对象</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">BMKPoiSearch *poiSearch = [[BMKPoiSearch alloc] init];</pre>
poiSearch.delegate = self;
+
<pre class="code_item prettyprint codestyle">let poiSearch = BMKPoiSearch()</pre>
</pre>
+
</div></div></div><div class="devguideorder"><span>3</span>设置POI矩形区域检索代理</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
</div><div class="devguideorder"><span>4</span>构造POI矩形区域检索参数</div><div class="devguidecenter">
+
poiSearch.delegate = self;</pre>
 +
<pre class="code_item prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
 +
poiSearch.delegate = self</pre>
 +
</div></div></div><div class="devguideorder"><span>4</span>构造POI矩形区域检索参数</div><div class="devguidecenter">
 
BMKPOIBoundSearchOption中tags字段可参考文档[http://lbsyun.baidu.com/index.php?title=lbscloud/poitags 百度地图POI行业分类]
 
BMKPOIBoundSearchOption中tags字段可参考文档[http://lbsyun.baidu.com/index.php?title=lbscloud/poitags 百度地图POI行业分类]
<pre class="prettyprint codestyle">//初始化请求参数类BMKBoundSearchOption的实例
+
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">//初始化请求参数类BMKBoundSearchOption的实例
 
BMKPOIBoundSearchOption *boundOption = [[BMKPOIBoundSearchOption alloc] init];
 
BMKPOIBoundSearchOption *boundOption = [[BMKPOIBoundSearchOption alloc] init];
 
//检索关键字,必选。
 
//检索关键字,必选。
第181行: 第296行:
 
boundOption.pageIndex = 0;
 
boundOption.pageIndex = 0;
 
//单次召回POI数量,默认为10条记录,最大返回20条。
 
//单次召回POI数量,默认为10条记录,最大返回20条。
boundOption.pageSize = 10;
+
boundOption.pageSize = 10;</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">//初始化请求参数类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</pre>
 +
</div></div>
 
<span style="color:#FF0000;">注意:scope字段默认为基本信息BMK_POI_SCOPE_BASIC_INFORMATION,如果要使用检索过滤条件filter字段,需要将scope字段设置为详细信息BMK_POI_SCOPE_DETAIL_INFORMATION。</span>
 
<span style="color:#FF0000;">注意:scope字段默认为基本信息BMK_POI_SCOPE_BASIC_INFORMATION,如果要使用检索过滤条件filter字段,需要将scope字段设置为详细信息BMK_POI_SCOPE_DETAIL_INFORMATION。</span>
</div><div class="devguideorder"><span>5</span>发起POI矩形区域检索请求</div><div class="devguidecenter"><pre class="prettyprint codestyle">BOOL flag = [poiSearch poiSearchInbounds:boundOption];
+
</div><div class="devguideorder"><span>5</span>发起POI矩形区域检索请求</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">BOOL flag = [poiSearch poiSearchInbounds:boundOption];
 
if(flag) {
 
if(flag) {
 
     NSLog(@"POI矩形区域内检索成功");
 
     NSLog(@"POI矩形区域内检索成功");
 
} else {
 
} else {
 
     NSLog(@"POI矩形区域内检索失败");
 
     NSLog(@"POI矩形区域内检索失败");
}
+
}</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">/**
</div><div class="devguideorder"><span>6</span>实现代理方法,获取检索结果</div><div class="devguidecenter"><pre class="prettyprint codestyle">#pragma mark - BMKPoiSearchDelegate
+
根据范围和检索词发起范围检索:异步方法,返回结果在BMKPoiSearchDelegate
 +
的onGetPoiResult里
 +
 +
boundOption 范围搜索的搜索参数类
 +
成功返回YES,否则返回NO
 +
*/
 +
let flag = poiSearch.poiSearchInbounds(boundOption)
 +
if flag {
 +
    print("POI区域内检索成功")
 +
} else {
 +
    print("POI区域内检索失败")
 +
}</pre>
 +
</div></div></div><div class="devguideorder"><span>6</span>实现代理方法,获取检索结果</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">#pragma mark - BMKPoiSearchDelegate
 
/**
 
/**
 
  *返回POI搜索结果
 
  *返回POI搜索结果
第199行: 第356行:
 
  *@param errorCode 错误码,@see BMKSearchErrorCode
 
  *@param errorCode 错误码,@see BMKSearchErrorCode
 
  */
 
  */
- (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPOISearchResult*)poiResult errorCode:(BMKSearchErrorCode)errorCode{   
+
- (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPOISearchResult*)poiResult errorCode:(BMKSearchErrorCode)errorCode {   
 
     //BMKSearchErrorCode错误码,BMK_SEARCH_NO_ERROR:检索结果正常返回
 
     //BMKSearchErrorCode错误码,BMK_SEARCH_NO_ERROR:检索结果正常返回
 
     if (errorCode == BMK_SEARCH_NO_ERROR) {   
 
     if (errorCode == BMK_SEARCH_NO_ERROR) {   
         //在此处理正常结果  
+
         //在此处理正常结果  
         NSLog(@"检索结果返回成功:%@",poiResult.poiInfoList);
+
         NSLog(@"检索结果返回成功:%@",poiResult.poiInfoList);
 
     }   
 
     }   
 
     else if (errorCode == BMK_SEARCH_AMBIGUOUS_KEYWORD) {   
 
     else if (errorCode == BMK_SEARCH_AMBIGUOUS_KEYWORD) {   
 
         NSLog(@"检索词有歧义");   
 
         NSLog(@"检索词有歧义");   
 
     } else {   
 
     } else {   
         NSLog(@"其他检索结果错误码");   
+
         NSLog(@"其他检索结果错误码相关处理");   
     }  
+
     }
}   
+
}</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">/**
</div><div class="devguideorder"><span>7</span>处理检索返回的结果</div><div class="devguidecenter">
+
  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("其他检索结果错误码相关处理")
 +
    }
 +
}</pre>
 +
</div></div></div><div class="devguideorder"><span>7</span>处理检索返回的结果</div><div class="devguidecenter">
 
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKPOIBoundsSearchPage。BMKPOISearchResult类结构如下图<br/>http://mapopen-pub-iossdk.cdn.bcebos.com/map/img/PoiNearby.png<br/>说明:<br/>BMKPOISearchResult &nbsp; &nbsp; &nbsp;POI检索结果类
 
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKPOIBoundsSearchPage。BMKPOISearchResult类结构如下图<br/>http://mapopen-pub-iossdk.cdn.bcebos.com/map/img/PoiNearby.png<br/>说明:<br/>BMKPOISearchResult &nbsp; &nbsp; &nbsp;POI检索结果类
  
第219行: 第393行:
 
BMKPOIDetailInfo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; POI详情信息类
 
BMKPOIDetailInfo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; POI详情信息类
  
NSArray &lt;BMKPOIDetailChildrenInfo *&gt; *children &nbsp; &nbsp; &nbsp; &nbsp; POI详情子节点信息,默认不返回,需要权限
+
NSArray&lt;BMKPOIDetailChildrenInfo *&gt; *children &nbsp; &nbsp; POI详情子节点信息,默认不返回,需要将scope字段设置为BMK_POI_SCOPE_DETAIL_INFORMATION
 
+
<br/><span style="color:#FF0000;">注意:POI详情子节点信息,默认不返回,需要额外申请权限,首先需要进行企业认证, 之后需要[http://lbsyun.baidu.com/index.php?title=FAQ/tags 提交工单]申请这个权限, 并详细说明使用场景, 包括但不限于, 使用开放平台哪些产品及服务, 应用在贵方哪些产品及应用上以及该产品或应用的相关介绍, 预估使用配额多少等。另外需附带AK信息。</span>
+
  
  
第228行: 第400行:
 
<div class="bluetitle"><div class="services-title-text">实现步骤</div></div><div class="devguide"><div class="leftborderbg" style="height:990px"></div><div class="devguideorder"><span>1</span>引入头文件</div><div class="devguidecenter">
 
<div class="bluetitle"><div class="services-title-text">实现步骤</div></div><div class="devguide"><div class="leftborderbg" style="height:990px"></div><div class="devguideorder"><span>1</span>引入头文件</div><div class="devguidecenter">
 
POI室内检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framework
 
POI室内检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framework
<pre class="prettyprint codestyle">#import <BaiduMapAPI_Base/BMKBaseComponent.h>
+
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">#import <BaiduMapAPI_Base/BMKBaseComponent.h>
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
+
#import <BaiduMapAPI_Search/BMKSearchComponent.h></pre>
</pre>
+
<pre class="code_item prettyprint codestyle">// 在桥接头文件BMKSwiftDemo-Bridging-Header中添加
</div><div class="devguideorder"><span>2</span>初始化POI室内检索对象</div><div class="devguidecenter"><pre class="prettyprint codestyle">BMKPoiSearch *poiSearch = [[BMKPoiSearch alloc] init];
+
#import <BaiduMapAPI_Base/BMKBaseComponent.h>
</pre>
+
#import <BaiduMapAPI_Search/BMKSearchComponent.h></pre>
</div><div class="devguideorder"><span>3</span>设置POI室内检索代理</div><div class="devguidecenter"><pre class="prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
+
</div></div></div><div class="devguideorder"><span>2</span>初始化POI室内检索对象</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">BMKPoiSearch *poiSearch = [[BMKPoiSearch alloc] init];</pre>
poiSearch.delegate = self;
+
<pre class="code_item prettyprint codestyle">let poiSearch = BMKPoiSearch()</pre>
</pre>
+
</div></div></div><div class="devguideorder"><span>3</span>设置POI室内检索代理</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
</div><div class="devguideorder"><span>4</span>构造POI室内检索参数</div><div class="devguidecenter">
+
poiSearch.delegate = self;</pre>
 +
<pre class="code_item prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
 +
poiSearch.delegate = self</pre>
 +
</div></div></div><div class="devguideorder"><span>4</span>构造POI室内检索参数</div><div class="devguidecenter">
 
BMKPOIBoundSearchOption中tags字段可参考文档[http://lbsyun.baidu.com/index.php?title=lbscloud/poitags 百度地图POI行业分类]
 
BMKPOIBoundSearchOption中tags字段可参考文档[http://lbsyun.baidu.com/index.php?title=lbscloud/poitags 百度地图POI行业分类]
<pre class="prettyprint codestyle">//初始化请求参数类BMKPoiIndoorSearchOption的实例
+
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">//初始化请求参数类BMKPoiIndoorSearchOption的实例
 
BMKPOIIndoorSearchOption *indoorOption = [[BMKPOIIndoorSearchOption alloc] init];
 
BMKPOIIndoorSearchOption *indoorOption = [[BMKPOIIndoorSearchOption alloc] init];
 
/**
 
/**
第254行: 第429行:
 
indoorOption.pageIndex = 0;
 
indoorOption.pageIndex = 0;
 
//单次召回POI数量,默认为10条记录,最大返回20条。
 
//单次召回POI数量,默认为10条记录,最大返回20条。
indoorOption.pageSize = 10;
+
indoorOption.pageSize = 10;</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">//初始化请求参数类BMKPoiIndoorSearchOption的实例
 
+
let indoorOption = BMKPOIIndoorSearchOption()
<span style="color:#FF0000;">注意:scope字段默认为基本信息BMK_POI_SCOPE_BASIC_INFORMATION,如果要使用检索过滤条件filter字段,需要将scope字段设置为详细信息BMK_POI_SCOPE_DETAIL_INFORMATION。</span>
+
/**
</div><div class="devguideorder"><span>5</span>发起POI室内检索请求</div><div class="devguidecenter"><pre class="prettyprint codestyle">BOOL flag = [poiSearch poiIndoorSearch:indoorOption];
+
*室内检索唯一标识符,必选
 +
*开启室内地图,在代理方法
 +
*-(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</pre>
 +
</div></div></div><div class="devguideorder"><span>5</span>发起POI室内检索请求</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">BOOL flag = [poiSearch poiIndoorSearch:indoorOption];
 
if(flag) {
 
if(flag) {
 
     NSLog(@"POI室内检索成功");
 
     NSLog(@"POI室内检索成功");
 
} else {
 
} else {
 
     NSLog(@"POI室内检索失败");
 
     NSLog(@"POI室内检索失败");
}
+
}</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">let flag = poiSearch.poiIndoorSearch(indoorOption)
</div><div class="devguideorder"><span>6</span>实现代理方法,获取检索结果</div><div class="devguidecenter"><pre class="prettyprint codestyle">#pragma mark - BMKPoiSearchDelegate
+
if flag {
 +
    NSLog("POI室内检索成功")
 +
} else {
 +
    NSLog("POI室内检索失败")
 +
}</pre>
 +
</div></div></div><div class="devguideorder"><span>6</span>实现代理方法,获取检索结果</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">#pragma mark - BMKPoiSearchDelegate
 
/**
 
/**
 
  *返回POI室内搜索结果
 
  *返回POI室内搜索结果
第283行: 第477行:
 
         NSLog(@"其他检索结果错误码");   
 
         NSLog(@"其他检索结果错误码");   
 
     }   
 
     }   
}
+
}</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">/**
</div><div class="devguideorder"><span>7</span>处理检索返回的结果</div><div class="devguidecenter">
+
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("其他检索结果错误码相关处理")
 +
    }
 +
}</pre>
 +
</div></div></div><div class="devguideorder"><span>7</span>处理检索返回的结果</div><div class="devguidecenter">
 
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKPOIIndoorSearchPage。BMKPOIIndoorSearchResult类结构如下图:<br/>http://mapopen-pub-iossdk.cdn.bcebos.com/map/img/PoiIndoor.png<br/>说明:<br/>BMKPOISearchResult &nbsp; &nbsp; POI室内检索结果类
 
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKPOIIndoorSearchPage。BMKPOIIndoorSearchResult类结构如下图:<br/>http://mapopen-pub-iossdk.cdn.bcebos.com/map/img/PoiIndoor.png<br/>说明:<br/>BMKPOISearchResult &nbsp; &nbsp; POI室内检索结果类
  
第299行: 第510行:
 
<div class="bluetitle"><div class="services-title-text">实现步骤</div></div><div class="devguide"><div class="leftborderbg" style="height:990px"></div><div class="devguideorder"><span>1</span>引入头文件</div><div class="devguidecenter">
 
<div class="bluetitle"><div class="services-title-text">实现步骤</div></div><div class="devguide"><div class="leftborderbg" style="height:990px"></div><div class="devguideorder"><span>1</span>引入头文件</div><div class="devguidecenter">
 
POI详情检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framework
 
POI详情检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framework
<pre class="prettyprint codestyle">#import <BaiduMapAPI_Base/BMKBaseComponent.h>
+
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">#import <BaiduMapAPI_Base/BMKBaseComponent.h>
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
+
#import <BaiduMapAPI_Search/BMKSearchComponent.h></pre>
</pre>
+
<pre class="code_item prettyprint codestyle">// 在桥接头文件BMKSwiftDemo-Bridging-Header中添加
</div><div class="devguideorder"><span>2</span>初始化POI详情检索对象</div><div class="devguidecenter"><pre class="prettyprint codestyle">BMKPoiSearch *poiSearch = [[BMKPoiSearch alloc] init];
+
#import <BaiduMapAPI_Base/BMKBaseComponent.h>
</pre>
+
#import <BaiduMapAPI_Search/BMKSearchComponent.h></pre>
</div><div class="devguideorder"><span>3</span>设置POI详情检索代理</div><div class="devguidecenter"><pre class="prettyprint codestyle">poiSearch.delegate = self;
+
</div></div></div><div class="devguideorder"><span>2</span>初始化POI详情检索对象</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">BMKPoiSearch *poiSearch = [[BMKPoiSearch alloc] init];</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">let poiSearch = BMKPoiSearch()</pre>
</div><div class="devguideorder"><span>4</span>构造POI详情检索参数</div><div class="devguidecenter"><pre class="prettyprint codestyle">//初始化请求参数类BMKPoiDetailSearchOption的实例
+
</div></div></div><div class="devguideorder"><span>3</span>设置POI详情检索代理</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
 +
poiSearch.delegate = self;</pre>
 +
<pre class="code_item prettyprint codestyle">//此处需要先遵循协议<BMKPoiSearchDelegate>
 +
poiSearch.delegate = self</pre>
 +
</div></div></div><div class="devguideorder"><span>4</span>构造POI详情检索参数</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">//初始化请求参数类BMKPoiDetailSearchOption的实例
 
BMKPOIDetailSearchOption *detailOption = [[BMKPOIDetailSearchOption alloc] init];
 
BMKPOIDetailSearchOption *detailOption = [[BMKPOIDetailSearchOption alloc] init];
 
//POI的唯一标识符集合,必选
 
//POI的唯一标识符集合,必选
 
detailOption.poiUIDs = @[@"ba97895c02a6ddc7f60e775f"];
 
detailOption.poiUIDs = @[@"ba97895c02a6ddc7f60e775f"];
 
//POI检索结果详细程度
 
//POI检索结果详细程度
//detailOption.scope = BMK_POI_SCOPE_BASIC_INFORMATION;
+
//detailOption.scope = BMK_POI_SCOPE_BASIC_INFORMATION;</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">//初始化请求参数类BMKPoiDetailSearchOption的实例
</div><div class="devguideorder"><span>5</span>发起POI详情检索请求</div><div class="devguidecenter"><pre class="prettyprint codestyle">BOOL flag = [poiSearch poiDetailSearch:detailOption];
+
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</pre>
 +
</div></div></div><div class="devguideorder"><span>5</span>发起POI详情检索请求</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">BOOL flag = [poiSearch poiDetailSearch:detailOption];
 
if(flag) {
 
if(flag) {
 
     NSLog(@"POI详情检索成功");
 
     NSLog(@"POI详情检索成功");
 
} else {
 
} else {
 
     NSLog(@"POI详情检索失败");
 
     NSLog(@"POI详情检索失败");
}
+
}</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">/**
</div><div class="devguideorder"><span>6</span>实现代理方法,获取检索结果</div><div class="devguidecenter"><pre class="prettyprint codestyle">#pragma mark - BMKPoiSearchDelegate
+
根据POI UID 发起POI详情检索:异步方法,返回结果在BMKPoiSearchDelegate
 +
的onGetPoiDetailResult里
 +
detailOption POI详情检索参数类
 +
成功返回YES,否则返回NO
 +
*/
 +
let flag = poiSearch.poiDetailSearch(detailOption)
 +
if flag {
 +
    print("POI详情检索成功")
 +
} else {
 +
    print("POI详情检索失败")
 +
}</pre>
 +
</div></div></div><div class="devguideorder"><span>6</span>实现代理方法,获取检索结果</div><div class="devguidecenter"><div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">#pragma mark - BMKPoiSearchDelegate
 
/**
 
/**
 
  *返回POI详情搜索结果
 
  *返回POI详情搜索结果
第335行: 第571行:
 
         NSLog(@"其他检索结果错误码");
 
         NSLog(@"其他检索结果错误码");
 
     }
 
     }
}
+
}</pre>
</pre>
+
<pre class="code_item prettyprint codestyle">/**
</div><div class="devguideorder"><span>7</span>处理检索返回的结果</div><div class="devguidecenter">
+
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("其他检索结果错误码相关处理")
 +
    }
 +
}</pre>
 +
</div></div></div><div class="devguideorder"><span>7</span>处理检索返回的结果</div><div class="devguidecenter">
 
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKPOIDetailSearchPage。BMKPOIDetailSearchResult类结构如下图:<br/>http://mapopen-pub-iossdk.cdn.bcebos.com/map/img/PoiDetail.png<br/>说明:<br/>BMKPOIDetailSearchResult &nbsp; &nbsp;POI详情检索结果类
 
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKPOIDetailSearchPage。BMKPOIDetailSearchResult类结构如下图:<br/>http://mapopen-pub-iossdk.cdn.bcebos.com/map/img/PoiDetail.png<br/>说明:<br/>BMKPOIDetailSearchResult &nbsp; &nbsp;POI详情检索结果类
  
第344行: 第597行:
 
BMKPOIDetailInfo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; POI详情信息类
 
BMKPOIDetailInfo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; POI详情信息类
  
NSArray &lt;BMKPOIDetailChildrenInfo *&gt; *children &nbsp; &nbsp;POI详情子节点信息,默认不返回,需要权限<br/><span style="color:#FF0000;">注意:POI详情子节点信息,默认不返回,需要额外申请权限,首先需要进行企业认证, 之后需要[http://lbsyun.baidu.com/index.php?title=FAQ/tags 提交工单]申请这个权限, 并详细说明使用场景, 包括但不限于, 使用开放平台哪些产品及服务, 应用在贵方哪些产品及应用上以及该产品或应用的相关介绍, 预估使用配额多少等。另外需附带AK信息。</span>
+
NSArray &lt;BMKPOIDetailChildrenInfo *&gt; *children &nbsp; &nbsp;POI详情子节点信息,默认不返回,需要将scope字段设置为BMK_POI_SCOPE_DETAIL_INFORMATION
 
+
</div></div></div>
 
+
</div></div>
+

2020年3月26日 (四) 11:17的最后版本

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城市检索请求
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类结构如下图:
poiCity.png
说明:
BMKPOISearchResult     POI检索结果类

BMKPoiInfo                  POI信息类

BMKPOIDetailInfo          POI详情信息类

NSArray<BMKPOIDetailChildrenInfo *> *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 <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周边检索参数

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类结构如下图:
PoiNearby.png
说明:
BMKPOISearchResult     POI检索结果类

BMKPoiInfo                   POI信息类

BMKPOIDetailInfo          POI详情信息类

NSArray<BMKPOIDetailChildrenInfo *> *children     POI详情子节点信息,默认不返回,需要将scope字段设置为BMK_POI_SCOPE_DETAIL_INFORMATION

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矩形区域检索参数

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类结构如下图
PoiNearby.png
说明:
BMKPOISearchResult      POI检索结果类

BMKPoiInfo                    POI信息类

BMKPOIDetailInfo           POI详情信息类

NSArray<BMKPOIDetailChildrenInfo *> *children     POI详情子节点信息,默认不返回,需要将scope字段设置为BMK_POI_SCOPE_DETAIL_INFORMATION


POI室内检索

POI室内检索是指检索室内地图上的POI,输入室内id和关键字后,返回室内地图内的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室内检索参数

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类结构如下图:
PoiIndoor.png
说明:
BMKPOISearchResult     POI室内检索结果类

BMKPoiIndoorInfo          POI信息类

BMKPOIDetailInfo          室内POI信息类


注意: 1.室内地图默认是关闭的,检索室内POI需要打开室内地图功能。 2.室内地图需要显示在屏幕范围内,才支持检索当前室内地图的室内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详情检索参数
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类结构如下图:
PoiDetail.png
说明:
BMKPOIDetailSearchResult    POI详情检索结果类

BMKPoiInfo                          POI信息类

BMKPOIDetailInfo                 POI详情信息类

NSArray <BMKPOIDetailChildrenInfo *> *children    POI详情子节点信息,默认不返回,需要将scope字段设置为BMK_POI_SCOPE_DETAIL_INFORMATION

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

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

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消