引入头文件
// 引入base相关所有的头文件#import<baidumapapi_base/bmkbasecomponent.h>
初始化bmkmapmanager
在您的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(@"启动引擎失败");}returnyes;}
设置全局坐标系
全局设置地图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("经纬度类型设置失败")}
创建bmkmapview
在您的viewcontroller.m文件中添加bmkmapview的创建代码,示例如下:
#import<baidumapapi_base/bmkbasecomponent.h>//引入base相关所有的头文件#import<baidumapapi_map/bmkmapcomponent.h>//引入地图功能所有的头文件@interfaceviewcontroller()<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{[superviewwillappear:animated];[_mapview viewwillappear];}-(void)viewwilldisappear:(bool)animated{[superviewwilldisappear:animated];[_mapview viewwilldisappear];}
编译运行
效果如下图所示:
地图类型及显示层级
百度地图sdk支持21级的地图显示,卫星图、热力图只支持显示到20级,放大至21级时将不再显示;交通路况图只支持显示到21级,放大至22级时将不再显示。各地图类型和图层支持层级说明如下表:
地图类型或图层类型 | 显示层级 |
---|---|
2d地图 | 4-21级 |
3d地图 | 19-21级 |
卫星图 | 4-20级 |
路况交通图 | 7-21级 |
百度城市热力图 | 11-20级 |
室内图 | 17-22级 |
// 将当前地图显示缩放等级设置为17级[_mapview setzoomlevel:17];
地图显示比例尺
百度地图sdk显示层级与比例尺对照表如下:
显示层级 | 比例尺/米 |
---|---|
4 | 1000000 |
5 | 500000 |
6 | 200000 |
7 | 100000 |
8 | 50000 |
9 | 25000 |
10 | 20000 |
11 | 10000 |
12 | 5000 |
13 | 2000 |
14 | 1000 |
15 | 500 |
16 | 200 |
17 | 100 |
18 | 50 |
19 | 20 |
20 | 10 |
21 | 5 |
//显示比例尺_mapview.showmapscalebar=yes;//隐藏比例尺_mapview.showmapscalebar=no;
支持多实例显示地图,即开发者可以在一个页面中建立多个地图对象,并且针对这些对象分别操作且不会产生相互干扰。
创建两个bmkmapview
在当前控制器中展示两个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.010, self.view.frame.size.width,(self.view.frame.size.height)/2.0-10)];
添加到当前的view上
//将upsidemapview添加到当前视图中[self.view addsubview:_upsidemapview];//将undersidemapview添加到当前视图中[self.view addsubview:_undersidemapview];
分别设置delegate
//设置upsidemapview的代理_upsidemapview.delegate= self;//设置undersidemapview的代理_undersidemapview.delegate= self;
分别管理mapview的生命周期
-(void)viewwillappear:(bool)animated {[superviewwillappear:animated];//当upsidemapview即将被显示的时候调用,恢复之前存储的upsidemapview状态[_upsidemapview viewwillappear];//当undersidemapview即将被显示的时候调用,恢复之前存储的undersidemapview状态[_undersidemapview viewwillappear];}-(void)viewwilldisappear:(bool)animated {[superviewwilldisappear:animated];//当upsidemapview即将被隐藏的时候调用,存储当前upsidemapview的状态[_upsidemapview viewwilldisappear];//当undersidemapview即将被隐藏的时候调用,存储当前undersidemapview的状态[_undersidemapview viewwilldisappear];}
分别设置显示缩放级别
//设置upsidemapview的缩放等级[_upsidemapview setzoomlevel:17];//设置undersidemapview的缩放等级[_undersidemapview setzoomlevel:20];
编译运行
效果如下图所示:
上一篇
下一篇
本篇文章对您是否有帮助?