【iOS百度地图系列_0】百度地图的配置及实现基本地图

    百度地图也是iOS开发工程中常用功能之一,随着iOSSDK的版本更新以及百度地图SDK的更新,现在的百度SDK的使用也发生了一些变化。本文背景iOSSDK8.3,百度地图SDK版本V2.0.2。本文参考文档为官方开发指南,开发时请仔细阅读。http://developer.baidu.com/map/index.php?title=iossdk  

    OK,下面开始介绍百度地图配置的详细步骤。


1.首先要有一个百度账号  

注册地址https://passport.baidu.com/v2/?reg&u=http%3A%2F%2Fdeveloper.baidu.com%2Fuser%2Freg


2.申请成为开发者

申请地址http://developer.baidu.com/user/reg


3.创建应用以及申请key

地址:http://lbsyun.baidu.com/apiconsole/key

创建好之后,留意“访问应用(AK)”字段,工程里要用到。


4.下载百度开发包

下载地址:http://api.map.baidu.com/lbsapi/cloud/sdkiosdev-download.htm

下载开发包请阅读下载页面下面的使用说明


5.创建工程

工程名应与第三步创建的应用名称一致。


6.配置开发环境

(1)指定工程编译方式

静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将Xcode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As设置为"Objective-C++”。最简单的,你把Appdelegate.m改为Appdelegate.mm就可以了。

(2)引入BaiduMapAPI.framework

百度地图SDK提供了模拟器和真机两种环境所使用的framework,分别存放在libs/Release-iphonesimulator和libs/Release-iphoneos文件夹下

开发者可根据需要只导入模拟器或真机其中的一个,也可以将两者合并后导入,合并方法:在终端输入命令:lipo -create Release-iphoneos/BaiduMapAPI.framework/BaiduMapAPI Release-iphonesimulator/BaiduMapAPI.framework/BaiduMapAPI -output Release-iphoneos/BaiduMapAPI.framework/BaiduMapAPI

此时Release-iphoneos文件夹下的BaiduMapAPI.framework即可同时用于真机和模拟器(可以使用lipo–info 命令检查framework所支持的架构)。

(3)引入所需的系统库

用到的库有:CoreLocation.framework、QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework共6个。

(4)环境配置

在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC。

(5)引入mapapi.bundle资源文件

不知道在哪的同学可以到全部下载的SDK文件夹下的Sample这个demo里去取。

(6)引入头文件

在使用SDK的类引入头文件:

#import <BaiduMapAPI/BMapKit.h>//引入所有的头文件

#import <BaiduMapAPI/BMKMapView.h>//只引入所需的单个头文件


 注意事项:在使用Xcode6进行SDK开发过程中,需要在info.plist中添加:Bundle display name ,且其值不能为空(Xcode6新建的项目没有此配置,若没有会造成manager start failed)


7.创建基本地图,按官方文档即可

(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!");  

    }  

// Add the navigation controller's view to the window and display.  

    [self.window addSubview:navigationController.view];  

    [self.window makeKeyAndVisible];  

   return YES;  

}

(3)创建BMKMapView

在您的ViewController.m文件中添加BMKMapView的创建代码,示例如下

- (void)viewDidLoad 

{  

    [super viewDidLoad];  

    BMKMapView* mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)]; 

    self.view = mapView;      

}

(4)控制BMKMapView的生命周期

自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    

}


(5)编译,运行,效果如下图所示:

【iOS百度地图系列_0】百度地图的配置及实现基本地图_第1张图片


百度地图支持多点触摸、双击放大、多点单击缩小、旋转等手势操作,此外自2.2.0版本起,支持相应的控制接口来开启/关闭这些手势操作。

注:百度地图iOS SDK自v2.2.0起,全面实现地图多实例,即开发者可以在一个页面中建立多个地图对象,并且针对这些对象分别操作且不会产生相互干扰。具体使用方法请参考MultiMapViewDemo的介绍。



你可能感兴趣的:(ios开发,百度地图SDK)