百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索、路径规划、地图标注、离线地图、室内地图、定位、周边雷达等丰富的LBS能力 。
百度地图iOS SDK从2.7版本开始,提供framework格式的开发包,之前的都是.a格式的,现在这种配置简单方便,更易使用.
下面开始集成百度地图的SDK
第一、导入框架
导入框架有两种方式:
1:使用CocoaPods导入地图SDK
/创建podFile文件 pod init //编辑podFile文件内容,添加框架名称 pod 'BaiduMapKit' //执行安装命令 pod install --no-repo-update//等待安装成功之后,出现如下命令 Analyzing dependencies Downloading dependencies Installing BaiduMapKit (2.9.1) Generating Pods project Integrating client project [!] Please close any current Xcode sessions and use ***.xcworkspace for this project from now on. Sending stats //到这里框架就安装完成了 2:手动导入.framework开发包
2:手动导入.framework开发包
首先下载完整的sdk,现在最新版本是3.0.0
然后将下载完成的包文件直接拖到项目中去
下面还要引入一些需要的系统库文件: CoreLocation.framework和 QuartzCore.framework、 OpenGLES.framework、 SystemConfiguration.framework、 CoreGraphics.framework、 Security.framework、 libsqlite3.0.tbd(xcode7以前为 libsqlite3.0.dylib)、 CoreTelephony.framework 、 libstdc++.6.0.9.tbd(xcode7以前为libstdc++.6.0.9.dylib)
第二、导入图片资源
从BaiduMapAPI_Map.framework||Resources文件中选择mapapi.bundle文件,拖入到项目中去,就可以了.
第三、引入头文件
在项目中导入下面的头文件: #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>//只引入所需的单个头文件
第四、使用框架
1:初始化BMKMapManager
在APPdelegate.h文件中添加BMKMapManager的定义
@interface BaiduMapApiDemoAppDelegate : NSObject <UIApplicationDelegate> { UIWindow *window; UINavigationController *navigationController; BMKMapManager* _mapManager; }
2:在AppDelegate.m文件中添加对BMKMapManager的初始化,并填入申请的授权Key
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 要使用百度地图,请先启动BaiduMapManager _mapManager = [[BMKMapManager alloc]init]; // 如果要关注网络及授权验证事件,请设定 generalDelegate参数 BOOL ret = [_mapManager start:@"在此处输入您的授权Key" generalDelegate:nil]; if (!ret) { NSLog(@"manager start failed!"); } addSubview:navigationController.view]; [self.window makeKeyAndVisible]; return YES; }
3: 在视图控制器的实现文件中创建BMKMapView
- (void)viewDidLoad { [super viewDidLoad]; BMKMapView* mapView = [[BMKMapView alloc]init]; self.view = mapView; }
4:自2.0.0起,BMKMapView新增viewWillAppear、viewWillDisappear方法来控制BMKMapView的生命周期,并且在一个时刻只能有一个BMKMapView接受回调消息,因此在使用BMKMapView的viewController中需要在viewWillAppear、viewWillDisappear方法中调用BMKMapView的对应的方法,并处理delegate
(void)viewWillAppear:(BOOL)animated { [_mapView viewWillAppear]; _mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放 } -(void)viewWillDisappear:(BOOL)animated { [_mapView viewWillDisappear]; _mapView.delegate = nil; // 不用时,置nil }
写完之后运行程序,可以看到地图已经出来了
注意事项
1 静态库中采用ObjectC++实现,因此需要您保证工程中至少有一个.mm后缀的源文件(可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即在Xcode的Project -> Edit Active Target -> Build Setting 中找到 Compile Sources As,并将其设置为"Objective-C++"
2 如果你只在Xib文件中使用了BMKMapView,没有在代码中使用BMKMapView,编译器在链接时不会链接对应符号,需要在工程属性中显式设定:在Xcode的Project -> Edit Active Target -> Build Setting -> Other Linker Flags中添加-ObjC
3 由于iOS9改用更安全的https,为了能够在iOS9中正常使用地图SDK,需要在"Info.plist"中进行如下配置,否则影响SDK的使用。
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程