文档地址:http://lbs.amap.com/api/ios-sdk/summary
创建工程
获取Key
如何申请Key
1、创建新应用
进入控制台,创建一个新应用。如果您之前已经创建过应用,可直接跳过这个步骤。
2、添加新Key
在创建的应用上点击"添加新Key"按钮,在弹出的对话框中,依次:输入应用名名称,选择绑定的服务为“iOS平台SDK”,输入安全码 Bundle ID,如下图所示:
需要注意的是: 1个KEY只能用于一个应用(多渠道安装包属于多个应用),1个Key在多个应用上使用会出现服务调用失败。
在阅读完高德地图API服务条款后,勾选此选项,点击“提交”,完成 Key 的申请,此时您可以在所创建的应用下面看到刚申请的 Key 了。
如何获取 Bundle Identifier
以下为您提供两种获取 Bundle Identifier 的方法。
方法一
通过代码获取,代码如下所示:
NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
方法二
Xcode 切换到 General 标签,查看 Bundle Identifier,如下图所示:
自动部署
自动部署省去您配置工程的时间,更高效的完成您的应用。
安装 CocoaPods
1、设置 ruby 的软件源。
由于默认的 ruby 的软件源(https://rubygems.org/)被墙阻拦导致 CocoaPods 安装失败,因此需要更新一下 ruby 的源。依次执行如下命令:
gem sources -l #(查看当前ruby的源)
gem sources --remove https://rubygems.org/ #(移除当前ruby的源)
gem sources -a https://ruby.taobao.org/ #(设置当前ruby源为淘宝源)
gem sources -l #(再次查看当前ruby的源)
显示如下文字表示更新成功。
*** CURRENT SOURCES *** https://ruby.taobao.org/
2、升级 gem。
gem 版本较低也可能导致安装或者升级失败,所以需要升级 gem。使用以下命令:
sudo gem update --system
3、安装 CocoaPods
检查一下您的 OS X 的版本。
若您的 OS X 版本小于等于 10.11,依次执行下面的命令安装 CocoaPods。
sudo gem install cocoapods pod setup
大于 10.11,使用如下命令安装。
sudo gem install -n /usr/local/bin cocoapods pod setup
注意:安装过程可能会耗时比较长,也有可能受网络状况影响造成失败,需要多次尝试直到成功。
使用 CocoaPods 安装 SDK
1、在您当前工程文件(.xcodeproj)所在文件夹下创建一个名为 Podfile 的文件。如果您尚未创建 Xcode 项目,请立即创建一个并将其保存到您的本地计算机。 Podfile 内容如下(以 3D 地图 SDK 为例,其他 SDK 的 Pod 库名称参考下表):
platform :ios, '7.0' #手机的系统
target 'YourProjectTarget' do #工程名字
pod 'AMap3DMap' #3D地图 SDK
end
高德 iOS SDK 的 Pod 库的名称如下表:
2、然后执行下面命令进行配置并安装 SDK。
pod repo update #用于保证本地地图相关SDK为最新版
pod install
注意:$pod 'AMapLocation' 命令还会引入基础 SDK .
3、命令执行成功后,会生成 .xcworkspace 文件,打开.xcworkspace 文件以启动工程(注意:此时不能同时开启.xcodeproj文件),如下所示。
升级 SDK
若已经安装了高德 iOS 地图 SDK,想更新到最新版本。在 Podfile 文件的目录下使用以下命令:
pod repo update #用于保证本地地图相关SDK为最新版
pod update
使用指定版本
使用指定版本 SDK,需要修改 Podfile 文件,添加版本相关信息,其文件内容如下:
platform :ios, '7.0' #手机的系统
target 'YourProjectTarget' do #工程名字
pod 'AMap3DMap', '~>4.4.1'#此处指定版本号
end
再执行命令:
pod repo update #用于保证本地地图相关SDK为最新版
pod install
开发者注意事项
添加高德Key
引入基础SDK头文件#import
[AMapServices sharedServices].apiKey = @"您的Key";
兼容性
支持iOS 7.0及以上系统。
基础SDK介绍
在相关下载中您可以看到我们提供了一个新的 SDK,这个基础 SDK 中包含了 高德 iOS 地图、定位、导航等 SDK 需要的基础核心,以及必要的公共资源,是使用其他 SDK 前必须引入的基础 SDK。
使用指南
1、自 iOS 地图 SDK V4.0.0 版、iOS 定位 SDK V2.0.0 版、iOS 导航 SDK V2.0.0 版之后的全部 iOS SDK 均需要引入基础 SDK。
2、基础 SDK 自 V1.2.0 版本后集成了 IDFA 服务,如果您的 APP 中并没有使用到相关服务,请您务必查看提交AppStore必读。
3、iOS 地图 SDK V4.0.0 版、iOS 定位 SDK V2.0.0 版、iOS 导航 SDK V2.0.0 版本及以后版本的 SDK设置Key时,需要引入基础SDK头文件#import
[AMapServices sharedServices].apiKey =@"您的key";
提交AppStore必读
基础 SDK V1.2.0 版本(包括其后版本)引入了 IDFA,可能会造成您的应用提交AppStore审核失败,请您认真阅读下文。
引入IDFA的目的
引入 IDFA 能够较精准的识别用户,能帮助我们最大程度的追踪您在使用 SDK 时的问题,确保SDK稳定性,如果您的应用集成了广告服务,建议使用我们线上版本的 SDK。
若您的应用未集成任何广告服务,但需要跟踪广告带来的激活行为,您仍旧可以使用我们线上版本的 SDK,具体内容请继续向下阅读。
审核时关于 IDFA 选项的选择
提交 AppStore 审核时关于 IDFA 的选项,如下图所示:
以上4项代表的含义
1、在 App 内投放广告
服务应用中的广告。如果你的应用中集成了广告的时候,你需要勾选这一项。
2、将此 App 安装归因于先前投放的特定广告
跟踪广告带来的安装。如果你使用了第三方的工具来跟踪广告带来的激活以及一些其他事件,但是应用里并没有展示广告你需要勾选这一项。
3、将此 App 中发生的操作归因于先前投放的特定广告
跟踪广告带来的用户的后续行为。如果你使用了第三方的工具来跟踪广告带来的激活以及一些其他事件。
4、iOS 中的“限制广告跟踪”设置
对您的应用使用 IDFA 的目的做下确认,只要您获取了 IDFA,那么这一项都是需要勾选的。
被 AppStore 拒绝的解决办法
1、如果您的应用里只是集成了广告,不追踪广告带来的激活行为,那么选择 1 和 4。
2、如果您的应用没有广告,而又获取了 IDFA。我们建议选择 2 和 4。
3、确保您接入的Foundation SDK版本属于V1.3.4及以上版本。
下载集成无 IDFA 的基础 SDK
如果您仍旧不希望使用集成 IDFA 版本的 SDK,通过 Cocoapods 引用:
先编辑 Podfile 文件:
platform :ios, '9.0' #手机的系统
target '您工程的名字' do
pod 'AMapLocation-NO-IDFA' #无IDFA版定位 SDK
如果您使用了我们多个SDK,则编辑为:
target '您工程的名字' do
pod 'AMap2DMap-NO-IDFA'
pod 'AMapSearch-NO-IDFA'
pod 'AMapLocation-NO-IDFA'
end
保存后,执行命令:
$pod install
应用HTTPS解决方案
您只需在配置高德 Key 前,添加开启 HTTPS 功能的代码,如下:
[[AMapServices sharedServices] setEnableHTTPS:YES];
创建地图
显示地图
配置定位权限
在 Info.plist 文件中增加定位权限配置,如下图示:
值得注意的是,定位权限有三种,您可根据需求进行选择。
Privacy - Location Always Usage Description 始终允许访问位置信息
Privacy - Location Usage Description 永不允许访问位置信息
Privacy - Location When In Use Usage Description 使用应用期间允许访问位置信息
配置头文件
在您的 ViewController.h 中添加以下两个头文件:
#import
#import
实例化地图对象
在 MapTypeViewController.m 文件中添加实例化 MAMapView 的代码。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
///地图需要v4.5.0及以上版本才必须要打开此选项(v4.5.0以下版本,需要手动配置info.plist)
[AMapServices sharedServices].enableHTTPS = YES;
///初始化地图
MAMapView *_mapView = [[MAMapView alloc] initWithFrame:self.view.bounds];
///把地图添加至view
[self.view addSubview:_mapView];
}
编译,运行工程,效果如下图所示:
显示定位蓝点
定位蓝点指的是进入地图后显示用户当前位置点的功能,效果如下:
//如果您需要进入地图就显示定位小蓝点,则需要下面两行代码
_mapView.showsUserLocation = YES;
_mapView.userTrackingMode = MAUserTrackingModeFollow;
注意:5.1.0后由于定位蓝点增加了平滑移动功能,如果在开启定位的情况下先添加annotation,需要在此回调方法中判断annotation是否为MAUserLocation,从而返回正确的View。注释如下:
/**
* @brief 根据anntation生成对应的View。
注意:5.1.0后由于定位蓝点增加了平滑移动功能,如果在开启定位的情况先添加annotation,需要在此回调方法中判断annotation是否为MAUserLocation,从而返回正确的View。
if ([annotation isKindOfClass:[MAUserLocation class]]) {
return nil;
}
* @param mapView 地图View
* @param annotation 指定的标注
* @return 生成的标注View
*/
- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id )annotation;