初步接入(第1篇)

2017年08月27日 14:44 | 4672次浏览 作者原创 版权保护

百度地图 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>




小说《我是全球混乱的源头》
此文章本站原创,地址 https://www.vxzsk.com/137.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程