ios地图sdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
显示地图
下载开发文档
hellobaidumap

引入头文件

// 引入base相关所有的头文件
#import<baidumapapi_base/bmkbasecomponent.h>

初始化bmkmapmanager

在您的appdelegate.m文件中添加对bmkmapmanager的初始化,并填入您申请的授权ak(请确保此处ak与当前工程bundle identifier匹配,否则会出现地图数据无法加载,只有方格的情况),示例如下:

-(bool)application:(uiapplication*)application
didfinishlaunchingwithoptions:(nsdictionary*)launchoptions {
// 要使用百度地图,请先启动baidumapmanager
bmkmapmanager*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)坐标。

开发者通过调用设置全局坐标方法(setcoordinatetypeusedinbaidumapsdk)设置的全局坐标类型后,意味着开发者和地图sdk约定传入和返回的坐标类型均为设置的类型;比如:定位传入的坐标,检索返回的坐标。

设置方法如下:

/**
百度地图sdk所有api均支持百度坐标(bd09)和国测局坐标(gcj02),用此方法设置您使用的坐标类型.
默认是bd09(bmk_coordtype_bd09ll)坐标.
如果需要使用gcj02坐标,需要设置coordinatetype为:bmk_coordtype_common.
*/
if([bmkmapmanager setcoordinatetypeusedinbaidumapsdk:bmk_coordtype_common]){
nslog("经纬度类型设置成功");
}else{
nslog("经纬度类型设置失败")
}
注意:设置后请严格遵守约定,否则会出现经纬度与地图上展示的不一致的问题。为设置此项请确保传入坐标均为bd09ll(百度经纬度坐标)

创建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
注意:bmkmapview使用viewwillappear、viewwilldisappear方法来控制bmkmapview的生命周期,并且在一个时刻只能有一个bmkmapview接受回调消息,因此在使用bmkmapview的viewcontroller中必须需要在viewwillappear、viewwilldisappear方法中调用bmkmapview的对应的方法。

示例代码如下:

-(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级
注:地图sdk自v4.0.0版本起,地图缩放等级由3-21变更为4-21,优化南北极地区展示效果。
设置缩放级别 bmkmapview设置级别示例代码如下:
// 将当前地图显示缩放等级设置为17级
[_mapview setzoomlevel:17];

地图显示比例尺

百度地图sdk显示层级与比例尺对照表如下:

显示层级比例尺/米
41000000
5500000
6200000
7100000
850000
925000
1020000
1110000
125000
132000
141000
15500
16200
17100
1850
1920
2010
215
设置比例尺显示 设置比例尺是否显示,默认为不显示,代码如下:
//显示比例尺
_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];

编译运行

效果如下图所示:

上一篇

开发注意事项

下一篇

切换地图类型

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

网站地图