IOS高德地图使用说明

关于高德地图

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,ios,高德地图)