百度地图集成--二
参考官方文档 --> 申请秘钥 --> 配置开发环境 --> Hello BaiduMap --> 注意事项
--> 注意Bundle ID(官方文档没有提示)
先创建一个百度地图文件 进行如下操作
在使用SDK的类 按需 引入下边的头文件:(appdelegte 中 和 viewController 中分别导入以下头文件)
#import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相关所有的头文件
#import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地图功能所有的头文件
#import <BaiduMapAPI_Search/BMKSearchComponent.h>//引入检索功能所有的头文件
#import <BaiduMapAPI_Cloud/BMKCloudSearchComponent.h>//引入云检索功能所有的头文件
#import <BaiduMapAPI_Location/BMKLocationComponent.h>//引入定位功能所有的头文件
#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>//引入计算工具所有的头文件
#import <BaiduMapAPI_Radar/BMKRadarComponent.h>//引入周边雷达功能所有的头文件
#import < BaiduMapAPI_Map/BMKMapView.h>//只引入所需的单个头文件
![]()
![]()
![]()
#import "ViewController.h" #import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相关所有的头文件 #import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地图功能所有的头文件 #import <BaiduMapAPI_Search/BMKSearchComponent.h>//引入检索功能所有的头文件 #import <BaiduMapAPI_Cloud/BMKCloudSearchComponent.h>//引入云检索功能所有的头文件 #import <BaiduMapAPI_Location/BMKLocationComponent.h>//引入定位功能所有的头文件 #import <BaiduMapAPI_Utils/BMKUtilsComponent.h>//引入计算工具所有的头文件 #import <BaiduMapAPI_Radar/BMKRadarComponent.h>//引入周边雷达功能所有的头文件 #import <BaiduMapAPI_Map/BMKMapView.h>//只引入所需的单个头文件 @interface ViewController ()<BMKMapViewDelegate, BMKPoiSearchDelegate> { BMKMapView *_mapView; BMKPoiSearch *_searcher; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //1. 创建百度地图 _mapView = [[BMKMapView alloc]init]; self.view = _mapView; //2. 切换为卫星图 //[_mapView setMapType:BMKMapTypeSatellite]; //3. 添加一个PointAnnotation BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init]; CLLocationCoordinate2D coor; coor.latitude = 39.915; coor.longitude = 116.404; annotation.coordinate = coor; annotation.title = @"这里是北京"; [_mapView addAnnotation:annotation]; //4.POI检索代码 [self performSelector:@selector(poiSearch) withObject:nil afterDelay:2]; //5.设置地图显示层级 3最大, 20最小 [_mapView setZoomLevel:16]; } #pragma mark POI检索代码 - (void)poiSearch { //1. 初始化检索对象 _searcher =[[BMKPoiSearch alloc]init]; _searcher.delegate = self; //2. 发起检索 --> 拼接参数 BMKNearbySearchOption *option = [[BMKNearbySearchOption alloc]init]; //分页索引,可选,默认为0 option.pageIndex = 0; //分页数量,可选,默认为10,最多为50 option.pageCapacity = 10; option.location = CLLocationCoordinate2DMake(39.915, 116.404); option.keyword = @"小吃"; BOOL flag = [_searcher poiSearchNearBy:option]; if(flag) { NSLog(@"周边检索发送成功"); } else { NSLog(@"周边检索发送失败"); } } //实现PoiSearchDeleage处理回调结果 - (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPoiResult*)poiResultList errorCode:(BMKSearchErrorCode)error { if (error == BMK_SEARCH_NO_ERROR) { //在此处理正常结果 // 添加大头针 / 显示一个列表给用户 for (BMKPoiInfo *poiInfo in poiResultList.poiInfoList) { BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init]; annotation.coordinate = poiInfo.pt; annotation.title = poiInfo.name; [_mapView addAnnotation:annotation]; } } else if (error == BMK_SEARCH_AMBIGUOUS_KEYWORD){ //当在设置城市未找到结果,但在其他城市找到结果时,回调建议检索城市列表 // result.cityList; NSLog(@"起始点有歧义"); } else { NSLog(@"error: %zd",error); NSLog(@"抱歉,未找到结果"); } } - (void)viewWillAppear:(BOOL)animated { [_mapView viewWillAppear]; _mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放 } - (void)viewWillDisappear:(BOOL)animated { [_mapView viewWillDisappear]; _mapView.delegate = nil; // 不用时,置nil _searcher.delegate = nil; //不使用时将delegate设置为 nil } @end