调用百度地图SDK
- 先去百度地图开放平台登陆账号,如果没有注册过需要先注册一个账号。然后进入控制台,选择我的应用,进行创建应用。
- 其中安全码Bundle Identifier在自己的工程项目中可见
- 然后你可以在自己的应用中看到你的AK,后续会用到。
- 然后是下载百度地图SDK,利用
cocopods
下载第三方库比较方便 - 在当前工程文件(
.xcodeproj
)所在文件夹下,打开终端
- 创建Podfile:
touch Podfile - 编辑Podfile内容如下:
pod ‘BaiduMapKit’ #百度地图SDK - 在Podfile所在的文件夹下输入命令:
pod install (这个可能比较慢,请耐心等待……)
成功以后,会出现如下记录:
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.
恭喜你已成功导入百度地图iOS SDK,现在就可以打开xcworkspace
文件,在你的项目中使用百度地图SDK了
注意:
- 在使用百度地图SDK时,会遇到版本问题。如果你在项目中调用定位的头文件
BaiduMapAPI_Location/BMKLocationComponent.h'
,会发生报错。
之所以BaiduMapAPI_Location
库找不到的原因是:在新版本的SDK中,百度地图把定位功能划分到另外一个第三方库BMKLocationKit
里面去了,新的BaiduMapKit
库里面没有location
项了。因此有两个解决方案:
- 除了集成’
BaiduMapKit
‘以外,还需要集成”BMKLocationKit
“框架,重新修改代码,重新pod新版本定位库; - 找回老版本的(同时包含地图和定位功能)的”
BaiduMapKit
“低版本库,不用修改代码;例如:pod 'BaiduMapKit','~>2.10.2' #百度地图SDK
- 如果想要调出一个简单的地图视图,还需要在
Info.plist
加入如下你没有的东西
- 之后,先在头文件中导入
#import <BaiduMapAPI_Map/BMKMapView.h>
,在AppDelegate.m
中写入如下
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//创建并初始化一个引擎对象
BMKMapManager *manager = [[BMKMapManager alloc] init];
//启动地图引擎
BOOL success = [manager start:@"前面你所获取的AK" generalDelegate:nil];
if (!success) {
NSLog(@"失败");
}
return YES;
}
- 在
ViewController.h
中写入百度地图库的头文件,再声明属性
@property (nonatomic,strong) BMKMapView *mapView;//地图视图
- 然后在
ViewController.m
中写入如下
- (void)viewDidLoad {
[super viewDidLoad];
//初始化地图
self.mapView = [[BMKMapView alloc] initWithFrame:self.view.frame];
//添加到view上
[self.view addSubview:self.mapView];
NSLog(@"地图调用成功!");
}
然后地图就可以正常显示了
调用高德地图SDK
调用高德地图的SDK和前面调用百度地图SDK的流程大同小异
- 先去高德地图开放平台登陆账号,如果没有注册过需要先注册一个账号。然后进入控制台,选择我的应用,进行创建新应用。
- 其中Bundle Identifier在自己的工程项目中可见
- 然后你可以在自己的应用中看到你的KEY,后续会用到。
- 然后是下载百度地图SDK,利用
cocopods
下载第三方库比较方便 - 在当前工程文件(
.xcodeproj
)所在文件夹下,打开终端
- 创建Podfile:
touch Podfile - 在Podfile文件中添加pod 'AMap3DMap’或pod ‘AMap2DMap’
其中3D的是3D地图,2D的是2D地图,选择其一添加即可,若全选的话会发生冲突致使SDK安装失败;如果需要定位的话,继续pod 'AMapLocation’就可以正常使用定位的库 - 在Podfile所在的文件夹下输入命令:
pod install (这个可能比较慢,请耐心等待……)
- 如果想要调出一个简单的地图视图,还需要在
Info.plist
加入如下你没有的东西
- 之后,先在头文件中导入
#import <AMapFoundationKit/AMapFoundationKit.h>
,在AppDelegate.m
中写入如下
[AMapServices sharedServices].apiKey = @"前面你所获取的KEY";
- 在
ViewController.m
中写入高德地图库的头文件,并写入如下
- (void)viewDidLoad {
[super viewDidLoad];
MAMapView *mapView = [[MAMapView alloc] initWithFrame:self.view.frame];
//把地图添加至view
[self.view addSubview:mapView];
然后地图就可以正常显示了
可能会遇到的问题
因为我之前使用的老版本的XCode,SDK用的也是老版本的,所以在运行时莫名其妙的出现了下列错误
Mapping architecture arm64 to x86_64. Ensure that this target's Architectures and Valid Architectures build settings are configured correctly for the iOS Simulator platform.
解决的方法:
第一步: xcode->File->Workspace Settings…
第二步:选择BuildSystem->Legacy Build System