【问题描述】
因客户需求,iOS项目原有的谷歌地图替换成高德地图,以下是添加高德地图lib库步骤(由于版本差异,官方文档仅供参考),供自己后续查阅以及分享,环境为:OS X ML,Xcode4.4.1, iOS SDK5.1,AMap_iOS_Api_Lib_v1.4。
【问题分析】
1、下载官网文件
官网网址:http://api.amap.com/Ios/
2、lipo lib库文件
官网lib库文件的真机和模拟器版本libMAMapKit.a分别存放在Release-iphoneos和Debug-iphonesimulator目录下,通过lipo命令合成一个lib文件,如下:
lipo -create Debug-iphonesimulator/libMAMapKit.a Release-iphoneos/libMAMapKit.a -output libMAMapKit.a
3、创建工程Demo
创建基于单视图的工程,确保编译通过(假定单视图文件名为xxViewController.m)。
4、添加lib库文件
1)添加lib库文件夹
把高德的lib相关文件(包括头文件,资源文件等)复制到项目中,如下目录路径(如果没有手动创建):
2)把Extern目录添加到项目中(选择:Create groups for any added folders即可)
3)把xxViewController.m改成xxViewController.mm,因为lib库中用到了C++语言,否则编译不通过。
4)在Build Settings的Header Search Paths中添加头文件搜索路径(否则无法找到MAMapKit.h等头文件)AMap_iOS_Api_Lib_v1.4,注意选中勾上,如下截图:
5)在Build Settings的Other Linker Flags中添加-all_load和-OjbC属性,目的是要让lib库支持OC语言,否则会编译不通过,如下截图:
6)在Build Phases的Link Binary With Libraries中添加所需的framework(包括”CoreLocation.framework”,”CoreText.framework”,”QuartzCore.framework”, ”SystemConfiguration.framework”,”libz.dylib”和“libxml.2.2”)和高德的lib库文件libMAMapKit.a到requred的lib列表中,如下截图:
7)最终的工作区目录如下截图,如果不是,手动托下即可,确保与截图保持一致:
5、添加官网示例代码(直接引用官网说明)
引入高德地图iOS API 的头文件和lib 开发库之后,添加相关代码来初始化地图,步骤如下所示:
1. 在MapSDK_Demo 项目的xxViewController.h 中引入高德地图iOS API ,并声明MAMapView 对象,示例代码如下所示:
- #import <UIKit/UIKit.h>
- #import "MAMapKit.h"
- @interface ViewController : UIViewController <MAMapViewDelegate>
- {
- MAMapView *myMapView;
- }
- @end
2. 在xxViewController.mm 的viewDidLoad 方法中初始化地图,代码如下所示:
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
- myMapView = [[MAMapView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
- myMapView.mapType = MAMapTypeStandard;
- myMapView.delegate = self;
- CLLocationCoordinate2D center = {39.91669,116.39716};
- MACoordinateSpan span = {0.04,0.03};
- MACoordinateRegion region = {center,span};
- [myMapView setRegion:region animated:NO];
- [self.view addSubview:myMapView];
- }
6、效果截图