姬長信(Redy)

iOS 高德SDK应用实践(一)—— 简介与初始化地图

>前言/uff1a前段时间/uff0c在一个项目中需要自定义地图。 于是/uff0c我们选择了接入了高德地图。 基于这次自定义地图的实践/uff0c总结一些使用上的一些小细节/uff0c并计划落地一系列地图相关的文章。 目录如下/uff1a [iOS 高德SDK应用实践/uff08一/uff09/u2014/u2014 简介与初始化地图]() iOS 高德SDK应用实践/uff08二/uff09/u2014/u2014 自定义大头针AnnotationView iOS 高德SDK应用实践/uff08三/uff09/u2014/u2014 自定义气泡CalloutView ------- > 本篇将介绍如何接入高德地图/uff0c以及高德地图SDK的简单使用。 ### 一、高德地图简介 高德是中国领先的[数字地图](https://baike.so.com/doc/6925078-7147188.html)内容、导航和位置服务解决方案提供商。拥有导航[电子地图](https://baike.so.com/doc/2362773-2498476.html)甲级测绘资质、测绘航空摄影甲级资质和互联网地图服务甲级测绘资质"三甲"资质/uff0c其优质的电子地图数据库成为公司的核心竞争力。于2014年2月/uff0c被阿里巴巴以11亿元全资收购。/uff08内容源于360搜索/uff09 ### 二、接入高德地图 - 第一步/uff1a去高德开放平台/uff0c申请高德`APIKey`。/uff08传送门/uff1a[链接](https://lbs.amap.com/api/ios-sdk/guide/create-project/get-key)/uff09 - 第二步/uff1a使用CocoaPods自动部署/uff0c将高德`SDK`导入项目。 >关于CocoaPods的使用请查看/uff1a[CocoaPods /u2014/u2014 简介、安装及基本使用](https://www.jianshu.com/p/832b37084510) 修改podfile/uff0c如下/uff1a ``` platform :ios, '10.0' target '你的项目名' do use_frameworks! pod 'AMap3DMap' #3D地图SDK pod 'AMapSearch' #地图SDK搜索功能 pod 'AMapLocation' #定位SDK end ``` 然后/uff0c`pod install`一下。 ### 三、高德地图简单使用 1. 首先/uff0c导入高德地图头文件。 PS/uff1a这里有个小知识点/uff0cSwift项目导入头文件需要用到桥接头文件/uff08Objective-C Bridging Header/uff09。具体方法见/uff1a[iOS 如何在Swift项目中导入OC头文件/uff1f]() ```swift #import #import ``` 2. 其次/uff0c在`AppDelegate`中/uff0c填写申请到的`APIKey`。 ```swift func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { //... AMapServices.shared().apiKey = "申请好的APIKey" //... return true } ``` 3. 然后/uff0c在`Controller`中实例化地图对象。 ```swift override func viewDidLoad() { super.viewDidLoad() let mapView = MAMapView(frame: self.view.bounds) mapView.delegate = self self.view.addSubview(mapView) } ``` 这时候/uff0c已经能展示地图了/uff0c是不是很简单/uff1f 4. 这时候/uff0c我们再稍微定制一下。 常用可配置参数如下/uff1a 参数 | 类型 | 说明 ----|----|---- logoCenter | CGPoint | 可设置Logo的位置。必须在mapView.bounds之内/uff0c否则会被忽略。 showsCompass | Bool | 是否显示指南针。 compassOrigin | CGPoint | 设置指南针的位置。 showsScale | Bool | 是否显示比例值。 scaleOrigin | CGPoint | 设置比例尺的位置。 zoomEnabled | Bool | 是否开启缩放手势/uff0c默认true。 scrollEnabled | Bool | 是否开启滑动手势/uff0c默认true。 rotateEnabled | Bool | 是否开启旋转手势/uff0c默认true。 rotateCameraEnabled | Bool | 是否开启倾斜旋转手势/uff0c默认true。用户可以在地图上放置两个手指/uff0c移动它们一起向下或向上去增加或减小倾斜角。 setZoomLevel | CGFloat | 改变地图缩放级别。范围从3级到19级/uff0c共17级。级别越高/uff0c展示的内容越细/uff0c例如街道等等。 setCenter | CLLocationCoordinate2D | 改变地图中心的位置。传递具体的经纬度。 注意/uff1a如果用到定位/uff0c需要开启定位权限。另外/uff0c模拟器无法模拟定位功能。 ```swift func initMapView() { AMapServices.shared()?.enableHTTPS = true mapView = MAMapView(frame: self.view.bounds) mapView.showsUserLocation = true mapView.isRotateEnabled = false // 禁止旋转手势 mapView.userTrackingMode = .followWithHeading // 打开定位方向 mapView.isRotateCameraEnabled = false // 禁止倾斜手势 mapView.showsCompass = false // 禁止显示指南针 mapView.delegate = self mapView.setZoomLevel(13.0, animated: true) // 默认缩放等级为13 mapView.pausesLocationUpdatesAutomatically = false self.view.addSubview(mapView) } ``` 这样/uff0c地图就简单配置好了/uff0c显示如下图/uff1a ![](https://cocosbcx.oss-cn-beijing.aliyuncs.com/article/68247715681912671592.png) 最后/uff0c更多详细信息/uff0c请参考/uff1a[高德地图官方文档](https://lbs.amap.com/)