关于高德地图

1目的

为了更方便的使用,以及避免犯错

2 集成步骤

2.1 申请密钥

详见:http://lbs.amap.com/api/ios-sdk/guide/verify/
高德地图iOS SDK开发密钥的申请地址为:http://lbs.amap.com/console/key/
需要高德开发者账号。

2.2 配置环境(重点)

高德地图提供了两种配置方式:

一、 手动配置

即手动导入所需要的库文件,以及进行相关的配置操作。手动配置相对麻烦,作简要说明,详见官方文档。

1. 引入地图库

MAMapKit.framework 文件添加到工程中。

2. 引入AMap.bundle资源文件

AMap.bundle资源文件中存储了定位、默认大头针标注视图等图片,可利用这些资源图片进行开发。
左侧目录中选中工程名,在右键菜单中选择Add Files to “工程名”…,从MAMapKit.framework->Resources文件中选择AMap.bundle文件,并勾选“Copy items if needed”复选框,单击“Add”按钮,将资源文件添加到工程中。
资源文件不是必须的,可以自定义资源图片。

3. 引入系统库

UIKit.framework  2D、3D、Search
Foundation.framework    2D、3D、Search
CoreGraphics.framework  2D、3D、Search
QuartzCore.framework    2D、3D
OpenGLES.framework  3D
CoreLocation.framework  2D、3D
CoreTelephony.framework 2D、3D、Search
SystemConfiguration.framework   2D、3D、Search
libz.dylib  2D、3D、Search
libstdc++6.09.dylib   2D、3D、Search
Security.framework  2D、3D

4. 环境配置

在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC。
V2.3.0(含)之前版本不支持arm64,需在 TARGETS->Build Settings->Architectures 点出选择框,选择 “Other”,将默认值修改为 $(ARCHS_STANDARD_32_BIT)。

二、 自动配置,即使用cocoaPods去添加库。

CocoaPods相对简单,自动管理第三方库。不需要额外的其他配置即可使用。配置详见官方文档。
编辑Podfile内容如下:
platform :ios, ‘7.0’ #手机的系统
pod ‘AMap3DMap’ #3D地图SDK
#pod ‘AMap2DMap’ #2D地图SDK (2D和3D不能同时使⽤用)
pod ‘AMapSearch’ #搜索服务SDK
在PodFile所在的文件夹下输入命令:
pod install

3 地图的使用

3.1 基础地图

3.1.1 地图Logo

默认的Logo为蓝色字样的“高德地图”,显示在地图的左下方。地图Logo不能移除,但可通过MAMapView.logoCenter属性来调整Logo的显示位置。在ViewController.m的viewDidLoad方法添加如下如下:

_mapView.logoCenter = CGPointMake(CGRectGetWidth(self.view.bounds)-55, 450);

3.1.2 指南针

指南针默认是开启状态,显示在地图的右上角。
通过MAMapView的showsCompass属性用来控制指南针的可见性。compassOrigin属性可改变指南针的显示位置。在ViewController.m的viewDidLoad方法添加如下如下:

_mapView.showsCompass= YES; // 设置成NO表示关闭指南针;YES表示显示指南针
_mapView.compassOrigin= CGPointMake(_mapView.compassOrigin.x, 22); //设置指南针位置

3.1.3 比例尺

比例尺表示地图上两点间距离与实际与之对应的两点距离的比,在不同的缩放级别下,比例尺代表的长度也是不同的。
在iOS SDK中,比例尺默认显示在地图的左上角。MAMapView的showScale属性用来控制比例尺的可见性,scaleOrigin属性用来改变比例尺的显示位置。在ViewController.m的viewDidLoad方法添加如下代码:

_mapView.showScale= YES;  //设置成NO表示不显示比例尺;YES表示显示比例尺
_mapView.scaleOrigin= CGPointMake(_mapView.scaleOrigin.x, 22);  //设置比例尺位置

3.1.4 手势控制

缩放手势

_mapView.zoomEnabled = NO;    //NO表示禁用缩放手势,YES表示开启

平移(滑动)手势

_mapView.scrollEnabled = NO;    //NO表示禁用滑动手势,YES表示开启

旋转手势(3D)

_mapView.rotateEnabled= NO;    //NO表示禁用旋转手势,YES表示开启

倾斜手势(3D)

_mapView.rotateCameraEnabled= NO;    //NO表示禁用倾斜手势,YES表示开启

3.1.5 地图操作

地图缩放
地图的缩放级别的范围是[3-19],调用MAMapView的setZoomLevel方法设置地图的缩放级别,用来缩放地图。示例代码如下:

[_mapView setZoomLevel:17.5 animated:YES];

地图平移

[_mapView setCenterCoordinate:center animated:YES];

地图旋转(3D)
旋转角度的范围是[0.f 360.f],以逆时针为正向。示例代码如下:

[_mapView setRotationDegree:60.f animated:YES duration:0.5];

地图倾斜(3D)
倾斜角度范围为[0.f, 45.f],示例代码如下:

[_mapView setCameraDegree:30.f animated:YES duration:0.5];

3.1.6 地图截屏

CGRect inRect = CGRectMake(80,142,160,284);
UIImage *screenshotImage = [_mapView takeSnapshotInRect:inRect] ;

3.2 卫星图

//显示卫星地图
_mapView.mapType = MAMapTypeSatellite;

说明:地图类型切换只需将地图类型设置成相应的类型(MAMapTypeStandard/MAMapTypeSatellite/MAMapTypeStandardNight)。

3.3 实时交通图

显示实时交通路况的代码如下:
_mapView.showTraffic= YES;

3.4 热力图图层


3.5 自定义图层


3.6 地Annotation(单点覆盖物)(重点)

3.6.1 大头针标注

地图标注在开发中经常使用,并且地图标注样式灵活,需要着重注意。
在地图的基础,添加地图标注,需要两步

  1. 创建地图标注MAPointAnnotation,添加地图标注[_mapView addAnnotation:annotation];
  2. mapView:viewForAnnotation:回调函数,设置标注样式。
    这里添加标注的代理方法,也可以把当前位置当做标注一样去显示出来,比较灵活。

3.6.2 自定义标注

自定义标注图标(基于大头针标注,可以自定义样式)

(1) 添加标注数据对象,可参考大头针标注的步骤(1)。
(2) 导入标记图片文件到工程中。这里我们导入一个名为restauant.png的图片文件。
(3) 在 协议的回调函数mapView:viewForAnnotation:中修改MAAnnotationView对应的标注图片。
关键代码:

annotationView.image = [UIImage imageNamed:@"restaurant"];
//设置中⼼心点偏移,使得标注底部中间点成为经纬度对应点
annotationView.centerOffset = CGPointMake(0, -18);

自定义气泡

气泡在iOS中又称为callout,它由背景和气泡内容构成。
(1) 新建自定义气泡类CustomCalloutView,继承UIView。
(2) 在CustomCalloutView.h中定义数据属性,包含:图片、商户名和商户地址。
(3) 在CustomCalloutView.m中重写UIView的drawRect方法,绘制弹出气泡的背景。
(4) 定义用于显示气泡内容的控件,并添加到SubView中。
(5) 在CustomCalloutView.m中给控件传入数据。
详见官方文档。

3.7 几何图形

3.8 地形图图层

3.9 热力图功能

3.10 自定义覆盖物

3.11 OpenGL绘制功能

3.12 定位功能

3.12.1 简介

iOS系统不允许使用第三方定位,地图SDK的定位方法是对iOS系统定位的二次封装。通过封装。可将原始的定位点无偏差的显示在高德地图上。同时,可自定义定位图标和精度圈的样式。

3.12.2 注意

1)2.3.0(含)之前版本的SDK,在iOS8中无法定位,请参考:iOS8无法定位的解决方案。
2)2.4.0(含)以后版本需在info.plist中追加NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription字段.其中:
NSLocationWhenInUseUsageDescription表示应用在前台的时候可以搜到更新的位置信息。
NSLocationAlwaysUsageDescription表示应用在前台和后台(suspend或terminated)都可以获取到更新的位置数据。
特别注意:在plist文件中加上之后如果无效,请在info页面加上

3.12.3 开启定位

_mapView.showsUserLocation = YES; //YES 为打开定位,NO为关闭定位
当位置更新时,会进定位回调,通过回调函数,能获取到定位点的经纬度坐标:

-(void)mapView:(MAMapView*)mapView didUpdateUserLocation: (MAUserLocation*)userLocation updatingLocation:(BOOL)updatingLocation

3.12.4 定位图层

定位的样式是可以更改的,方式与标注类似。

3.12.5 后台定位

app退到后台,且位置不变动时,也不会被系统挂起,可持久记录位置信息。

1.添加代码。

_mapView.pausesLocationUpdatesAutomatically = NO;

2.工程配置。

a)左侧目录中选中工程名,开启 TARGETS->Capabilities->Background Modes
b)在 Background Modes中勾选 Location updates
##3.13 检索功能

注意事项

高德地图暂不支持多地图实例,需要共用一个mapView。

参考资料

参考官方文档:
http://lbs.amap.com/api/ios-sdk/guide/introduction/

IOS高德地图使用说明相关推荐

  1. flutter引入高德地图_Flutter笔记-调用原生IOS高德地图sdk

    一.前言 2017年底因公司业务组合部门调整,新的团队部分维护的项目用React Native技术混合开发.为适应环境变化,开启疯狂RN学习之旅,晚上回来啃资料看视频.可能由于本身对RN技术体验不感冒 ...

  2. iOS高德地图路径选择

    新公司的一个物流项目用到了高德地图的路径规划导航.之前没用过高德的路径规划,最麻烦的是画出路径,以及多路径情况下的点击选择路径. 其实画出路径的算法在高德地图的相关demo里面有,只要抠出来就行.我要 ...

  3. [iOS]高德地图SDK开发--准备篇

    本文是对高德地图SDK使用的总结,对于高德地图不做过多介绍,可直接登录其官网开放平台进行了解; PS: 这里主要是讲解地图使用的准备工作,最后,以显示地图并定位到当前位置来验证;对于其他的使用,可参看 ...

  4. iOS 高德地图开发详解

    Demo地址 如果有所帮助记得关注,点Star demo中添加了查看路况功能,如果不需要,可以删除. ##一:基本地图功能实现 ####1.申请密钥流程 申请密钥链接 2.配置环境(重点) 高德地图提 ...

  5. iOS高德地图使用笔记

    高德地图笔记 一 准备工作 1.前往高德官网,申请key,http://lbs.amap.com/ 2.导入高德SDK,使用cocopods  platform :ios, '7.0' #手机的系统 ...

  6. iOS 高德地图(二)(进阶具体使用的细节)

    2019独角兽企业重金招聘Python工程师标准>>> 前面我们配置好了SDK的环境,也在高德的官网中申请了AppKey:de5b39fb2b066ed80c51383bb3a1fe ...

  7. iOS 高德地图处理左下角小图标

    1.设置小图标的位置 _mainMapView.logoCenter = CGPointMake(110, 10); 这个可以设置坐标,但是这个方法只限定坐标在可见范围之内,所以这个方法是调整小图标位 ...

  8. iOS高德地图 多个大头针显示图片 点击效果

    最近做一款有关地图的软件  使用到了高德地图  将一些经验记录下来 第一篇博客  以后会陆续更新 希望看到的朋友多多支持啦. 导入等过程PASS掉. 新建一个类  继承 MAPointAnnotati ...

  9. iOS 高德地图 百度地图 以及苹果自带的地图URI的使用 以及CLLocationManager的使用

    1.CLLocationManager的使用 1.首先Xcode导入一个自己带的官方头文件在任意一个类.h #import<MapKit/MapKit.h> 并遵守两协议 <CLLo ...

  10. IOS 高德地图获取用户导航路径

    标题 最近项目里有一个需求,用户开始导航之后,要将导航的路径传到服务器,在另一个客户端显示所有用户的导航路径. ## 思路 ## 要实现这个功能,最关键的一点就是当用户导航之后如何取到路径.笔者是用的 ...

最新文章

  1. hadoop2.0集群进程_hadoop集群基本进程
  2. Mr. Panda and Kakin(拓展欧几里得 + O(1)快速乘)
  3. python3.6+selenium_Testsuits测试套件
  4. oracle错误1327,Oracle中的PGA监控报警分析(r11笔记第97天)
  5. 什么是倾斜45度的火山图?
  6. 优秀程序员的两大要素:懒 + 笨
  7. helm使用_通过图表提升您在Kubernetes上使用Helm的能力
  8. 基于神经网络的文本特征提取——从词汇特征表示到文本向量
  9. C语言 通讯录管理系统(链表,手机号码分段存储,txt文件存取)
  10. 豆丁网免费下载软件(冰点非常好用)
  11. java 异步发送消息_Java模拟异步消息的发送与回调
  12. 1+X计算机视觉考证一些知识点
  13. SPDK/NVMe存储技术分析之用户态ibv_post_send()源码分析(一)
  14. DL3 - optimization algorithms
  15. 电脑中删掉的照片怎么恢复
  16. python基础编程题(一)
  17. HTML网页上常见的3种单位是,HTML_CSS中常用的单位,一、长度单位 长度单位 - phpStudy...
  18. 敏感字段加密,叶俊峰
  19. android studio调用电话,Android studio案例之实现电话拨号
  20. 深度学习网络结构图绘制工具及方法

热门文章

  1. Objective C的关键字oneway
  2. Directx11教程(58) 鼠标控制摄像机
  3. 华为如何不关闭进程_关闭华为手机后台程序的小技巧,终于知道了,再也不用担心内存了...
  4. linux进入pe系统,如何进入pe系统【设置模式】
  5. 014_SSS_High-Resolution Image Synthesis with Latent Diffusion Models
  6. 2021年了,微信公众号还有前途吗?
  7. Linux性能优化大杀器—平均负载率详解(鼓励收藏)
  8. HTML+CSS基础学习笔记1
  9. ATM(异步传输模式)
  10. TCL: an ANN-to-SNN Conversion with Trainable Clipping Layers