非原创在http://www.2cto.com/kf/201305/213314.html的基础上稍做修改。
1、官网下载最新的SDK开发包_iOS静态库文件 http://developer.baidu.com/map/sdkiosdev-download.htm
解压后如下:
其中inc是头文件
mapapi.bundle是图片库
Release-iphoneos真机调试所需用到的.a文件
Release-iphonesimulator虚拟机调试所需用到的.a文件
readme是一些版本介绍
1.2到http://lbsyun.baidu.com/apiconsole/key去申请一个key
2.环境设置
2.1、打开xcode的新建一个singleView模板的demo,然后将readme.txt除外的所有文件拖到项目的工程文件中,注意需要copy+destination截图如下
为了方便管理我们最好为他们建立一个Grop 单独存放
2.2然后继续下一步TARGETS->**** ->Build Settings ->Linking ->Other linker Flags中添加-all_load
2.3现在需要设置一下链接库的环境变量,好让项目能顺利找到目录下的.a文件,选中TARGETS->**** ->Build Settings ->Search ->library Search Paths
删除已有的三个,添加一个足矣(模拟器+真机):$(SRCROOT)/libs/Release$(EFFECTIVE_PLATFORM_NAME)
3.引入系统framework
百度地图SDK中提供了定位功能和动画效果,v==0.0版本开始使用OpenGL渲染,因此您需要在您的Xcode工程中引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework。
4.代码部分
4.1AppDelegate.h
首先导入百度地图的头文件BMapKit.h
#import <UIKit/UIKit.h>
#import "BMapKit.h"//导入BMapKit.h
@interface zhAppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic)BMKMapManager* _mapManager;//实例化
@end
4.2AppDelegate.m
在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions添加如下代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// 要使用百度地图,请先启动BaiduMapManager
_mapManager = [[BMKMapManager alloc] init];
// 如果要关注网络及授权验证事件,请设定generalDelegate参数
BOOL ret = [_mapManager start:@"qnRl9RHNScry2hlAfp15ieOP" generalDelegate:nil];
if (!ret) {
NSLog(@"载入地图出差");
}
return YES;
}
在AppDelegate中授权过后,可以随意在任意的Viewcontroller中使用Mapview了。当然,BMKMapManager授权也可以写到任意的ViewController中,但是这样的话,只能在这个ViewController中使用MapView,换其它类使用地图的话,还需再来授权,否则地图view会是黑屏.
4.3在需要显示地图的viewcontroller.m中加入如下代码:
#import "zhViewController.h"
#import "BMapKit.h"//导入BMKMapView.h
@implementation zhViewController
- (void)viewDidLoad
{
[super viewDidLoad];
BMKMapView *mapView = [[BMKMapView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];//实例化BMKMapView类。
self.view = mapView;
}
@end
(注:静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm))