百度地图

iOS开发集成百度地图API

字数1113  阅读1172  评论1 

集成百度地图到应用中

百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索、路径规划、地图标注、离线地图、室内地图、定位、周边雷达等丰富的LBS能力 。

百度地图iOS SDK从2.7版本开始,提供framework格式的开发包,之前的都是.a格式的,现在这种配置简单方便,更易使用.

下面开始集成百度地图的SDK

1 导入框架

导入框架有两种方式:
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开发包
首先下载完整的sdk,现在最新版本是3.0.0


QQ20160605-0@2x.png


然后将下载完成的包文件直接拖到项目中去


QQ20160605-1@2x.png


下面还要引入一些需要的系统库文件:
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)。

2导入图片资源

从BaiduMapAPI_Map.framework||Resources文件中选择mapapi.bundle文件,拖入到项目中去,就可以了.

3引入头文件

在项目中导入下面的头文件:
#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>//只引入所需的单个头文件

4使用框架

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 
}

写完之后运行程序,可以看到地图已经出来了


QQ20160605-2@2x.png

注意事项

  • 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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值