// 引入base相关所有的头文件#import <BaiduMapAPI_Base/BMKBaseComponent.h>
在您的AppDelegate.m文件中添加对BMKMapManager的初始化,并填入您申请的授权AK(请确保此处AK与当前工程Bundle identifier匹配,否则会出现地图数据无法加载,只有方格的情况),示例如下:
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// 要使用百度地图,请先启动BaiduMapManagerBMKMapManager *mapManager = [[BMKMapManager alloc] init];// 如果要关注网络及授权验证事件,请设定generalDelegate参数BOOL ret = [_mapManager start:@"在此处输入您的授权AK" generalDelegate:nil];if (!ret) {NSLog(@"启动引擎失败");}return YES;}
全局设置地图SDK与开发者交互时的坐标类型。地图SDK默认使用BD09LL(BMK_COORDTYPE_BD09LL)坐标。如需使用GCJ02坐标,传入参数值为BMK_COORDTYPE_COMMON即可。本方法不支持传入WGS84(BMK_COORDTYPE_GPS)坐标。
设置方法如下:
/**百度地图SDK所有API均支持百度坐标(BD09)和国测局坐标(GCJ02),用此方法设置您使用的坐标类型.默认是BD09(BMK_COORDTYPE_BD09LL)坐标.如果需要使用GCJ02坐标,需要设置CoordinateType为:BMK_COORDTYPE_COMMON.*/if ([BMKMapManager setCoordinateTypeUsedInBaiduMapSDK: BMK_COORDTYPE_COMMON]) {NSLog("经纬度类型设置成功");} else {NSLog("经纬度类型设置失败")}
在您的ViewController.m文件中添加BMKMapView的创建代码,示例如下:
#import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相关所有的头文件#import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地图功能所有的头文件@interface ViewController ()<BMKMapViewDelegate>@property (nonatomic, strong) BMKMapView *mapView;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];_mapView = [[BMKMapView alloc]initWithFrame:self.view.bounds];_mapView.delegate = self;[self.view addSubView:_mapView];}@end
示例代码如下:
-(void)viewWillAppear:(BOOL)animated{[super viewWillAppear:animated];[_mapView viewWillAppear];}-(void)viewWillDisappear:(BOOL)animated{[super viewWillDisappear:animated];[_mapView viewWillDisappear];}
效果如下图所示:

百度地图SDK支持21级的地图显示,卫星图、热力图只支持显示到20级,放大至21级时将不再显示;交通路况图只支持显示到21级,放大至22级时将不再显示。各地图类型和图层支持层级说明如下表:
内容转换完成
// 将当前地图显示缩放等级设置为17级[_mapView setZoomLevel:17];
注:地图SDK自v6.5.9版本开始支持自定义地图背景网格图片。仅支持png格式,图片不得大于500KB,像素过大时,务必压缩图片后再设置,避免渲染损耗过多性能导致地图卡顿。
代码示例:
// 设置地图背景网格图片_mapView.backgroundImage = [UIImage imageNamed:@"background_256x256"];
百度地图SDK显示层级与比例尺对照表如下:
内容转换完成
//显示比例尺_mapView.showMapScaleBar = YES;//隐藏比例尺_mapView.showMapScaleBar = NO;
支持多实例显示地图,即开发者可以在一个页面中建立多个地图对象,并且针对这些对象分别操作且不会产生相互干扰。
在当前控制器中展示两个BMKMapView,示例代码如下:
#import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相关所有的头文件#import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地图功能所有的头文件@property (nonatomic, strong) BMKMapView *upsideMapView; //当前界面上方的mapView@property (nonatomic, strong) BMKMapView *undersideMapView; //当前界面下方的mapView_upsideMapView = [[BMKMapView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, (self.view.frame.size.height) / 2.0)];_undersideMapView = [[BMKMapView alloc] initWithFrame:CGRectMake(0, (self.view.frame.size.height) / 2.0 + 10, self.view.frame.size.width, (self.view.frame.size.height) / 2.0 - 10)];
//将upsideMapView添加到当前视图中[self.view addSubview:_upsideMapView];//将undersideMapView添加到当前视图中[self.view addSubview:_undersideMapView];
//设置upsideMapView的代理_upsideMapView.delegate = self;//设置undersideMapView的代理_undersideMapView.delegate = self;
- (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:animated];//当upsideMapView即将被显示的时候调用,恢复之前存储的upsideMapView状态[_upsideMapView viewWillAppear];//当undersideMapView即将被显示的时候调用,恢复之前存储的undersideMapView状态[_undersideMapView viewWillAppear];}- (void)viewWillDisappear:(BOOL)animated {[super viewWillDisappear:animated];//当upsideMapView即将被隐藏的时候调用,存储当前upsideMapView的状态[_upsideMapView viewWillDisappear];//当undersideMapView即将被隐藏的时候调用,存储当前undersideMapView的状态[_undersideMapView viewWillDisappear];}
//设置upsideMapView的缩放等级[_upsideMapView setZoomLevel:17];//设置undersideMapView的缩放等级[_undersideMapView setZoomLevel:20];
效果如下图所示:

上一篇
下一篇
本篇文章对您是否有帮助?