更新时间:2020-09-20
地图建筑物检索简介
建筑物检索为高级服务,需申请AK权限。
实现步骤
1引入头文件
地图建筑物数据检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framewor
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初始化建筑物检索对象
Objective-C
Swift
BMKBuildingSearch *buildingSearch = [[BMKBuildingSearch alloc] init];
let BuildSearch = BMKBuildingSearch()
3设置建筑物检索代理
Objective-C
Swift
buildingSearch.delegate = self;
BuildSearch.delegate = self
4构造建筑物检索参数
Objective-C
Swift
BMKBuildingSearchOption *opeiton = [[BMKBuildingSearchOption alloc] init]; opeiton.location = CLLocationCoordinate2DMake(23.02738, 113.748139);
buildOption.location = CLLocationCoordinate2DMake(23.02738, 113.748139)
5发起建筑物检索请求
Objective-C
Swift
BOOL flag = [buildingSearch buildingSearch:opeiton]; if (flag) { NSLog(@"建筑物检索成功"); } else { NSLog(@"建筑物检索失败"); }
let flag = BuildSearch.buildingSearch(buildOption) if flag { NSLog("建筑物检索成功") } else { NSLog("建筑物检索失败") }
6实现代理方法,获取检索结果
Objective-C
Swift
(void)onGetBuildingResult:(BMKBuildingSearch *)searcher result:(BMKBuildingSearchResult *)result errorCode:(BMKSearchErrorCode)error { if (error == BMK_SEARCH_NO_ERROR) { //在此处理正常结果 } else { NSLog(@"检索失败"); } }
func onGetBuildingResult(_ searcher: BMKBuildingSearch, result: BMKBuildingSearchResult, errorCode: BMKSearchErrorCode) { if error == BMK_SEARCH_NO_ERROR { //在此处理正常结果 } else { print("检索失败"); } }
7处理检索返回的结果
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKCustomBuildingPage。BMKBuildingSearchResult 类结构如下图:
说明:
BMKBuildInfo 建筑物信息,其中paths,center为加密数据;
检索后绘制效果如下::