高德地图

文档地址:http://lbs.amap.com/api/ios-sdk/summary

创建工程

获取Key

如何申请Key

1、创建新应用
进入控制台,创建一个新应用。如果您之前已经创建过应用,可直接跳过这个步骤。

2017dev_dev.png
2017dev_create_app.png

2、添加新Key
在创建的应用上点击"添加新Key"按钮,在弹出的对话框中,依次:输入应用名名称,选择绑定的服务为“iOS平台SDK”,输入安全码 Bundle ID,如下图所示:
需要注意的是: 1个KEY只能用于一个应用(多渠道安装包属于多个应用),1个Key在多个应用上使用会出现服务调用失败。


2017dev_ios_key.png

在阅读完高德地图API服务条款后,勾选此选项,点击“提交”,完成 Key 的申请,此时您可以在所创建的应用下面看到刚申请的 Key 了。

如何获取 Bundle Identifier

以下为您提供两种获取 Bundle Identifier 的方法。
方法一
通过代码获取,代码如下所示:

NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];

方法二
Xcode 切换到 General 标签,查看 Bundle Identifier,如下图所示:


ios_cloud_bundle.png

自动部署

自动部署省去您配置工程的时间,更高效的完成您的应用。

安装 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-podset.png

高德 iOS SDK 的 Pod 库的名称如下表:


屏幕快照 2017-10-17 下午4.26.09.png

2、然后执行下面命令进行配置并安装 SDK。

pod repo update #用于保证本地地图相关SDK为最新版
pod install

注意:$pod 'AMapLocation' 命令还会引入基础 SDK .
3、命令执行成功后,会生成 .xcworkspace 文件,打开.xcworkspace 文件以启动工程(注意:此时不能同时开启.xcodeproj文件),如下所示。


ios-podworkspace.png
升级 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 <AMapFoundationKit/AMapFoundationKit.h>并添加如下示例代码,配置之前在官申请的高德Key。

[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 <AMapFoundationKit/AMapFoundationKit.h>并添加如下示例代码,配置之前在官申请的高德Key。

[AMapServices sharedServices].apiKey =@"您的key";

提交AppStore必读

基础 SDK V1.2.0 版本(包括其后版本)引入了 IDFA,可能会造成您的应用提交AppStore审核失败,请您认真阅读下文。

引入IDFA的目的

引入 IDFA 能够较精准的识别用户,能帮助我们最大程度的追踪您在使用 SDK 时的问题,确保SDK稳定性,如果您的应用集成了广告服务,建议使用我们线上版本的 SDK。
若您的应用未集成任何广告服务,但需要跟踪广告带来的激活行为,您仍旧可以使用我们线上版本的 SDK,具体内容请继续向下阅读。

审核时关于 IDFA 选项的选择

提交 AppStore 审核时关于 IDFA 的选项,如下图所示:


idfa_choose.png

以上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.png

值得注意的是,定位权限有三种,您可根据需求进行选择。
Privacy - Location Always Usage Description 始终允许访问位置信息
Privacy - Location Usage Description 永不允许访问位置信息
Privacy - Location When In Use Usage Description 使用应用期间允许访问位置信息

配置头文件

在您的 ViewController.h 中添加以下两个头文件:

#import <MAMapKit/MAMapKit.h>
#import <AMapFoundationKit/AMapFoundationKit.h>
实例化地图对象

在 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];
    
}

编译,运行工程,效果如下图所示:


ios_mapshow-e1417077738236.png

显示定位蓝点

定位蓝点指的是进入地图后显示用户当前位置点的功能,效果如下:


iOS_location.png
 //如果您需要进入地图就显示定位小蓝点,则需要下面两行代码
    _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 <MAAnnotation>)annotation;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容