高德LBS开放平台将高德最专业的定位、地图、搜索、导航等能力,以API、SDK等形式向广大开发者免费开放。本章节我们来简单学习一下如何使用它的定位及地图SDK。

一、相关框架及环境配置

  • 地图SDK

对于如何下载SDK,它的官方文档提供了很详细的说明,使用CocoaPods。如果你没有安装CocoaPods,也可以在它的官网直接下载。

接下来只需要将SDK引入工程,完成相关的环境配置即可。在它的官方文档中有详细说明,这里就不重复了。

地图SDK文档

  • 定位SDK

高德 iOS 定位 SDK 提供了不依赖于地图定位的定位功能,开发者可以无地图显示的场景中便捷地为应用程序添加定位功能。它的定位 SDK中提供的持续定位功能与地图功能分离。同样我们先下载SDK。

由于定位与地图是不同的SDK所以一定要记得设置两次用户Key。

另外需要特别注意的是,在官方文档中对于 TARGETS-Build Settings-Architectures的环境配置,在定位和地图SDK是不同的,但是大家只要设置其中一个就可以了。

定位SDK文档

二、示例代码

  • 引入相关框架,并完成环境配置

在它的官方文档中对于需要什么样的框架有详细的说明,大家根据文档添加。

最后根据文档我们需要设置info.plist文件。

  • 在AppDelegate.m文件中完成apiKey的设置
  1. #import <MAMapKit/MAMapKit.h>//地图SDK头文件
  2. #import <AMapLocationKit/AMapLocationKit.h>//定位SDK头文件
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  2. [MAMapServices sharedServices].apiKey = @"990c9f469d381bd72a6915b3d0c829a5";//地图SDK
  3. [AMapLocationServices sharedServices].apiKey =@"990c9f469d381bd72a6915b3d0c829a5";//定位SDK
  4. return YES;
  5. }
  • 在viewController.m文件中引入所需属性,并完成懒加载
  1. #import <MAMapKit/MAMapKit.h>
  2. #import <AMapLocationKit/AMapLocationKit.h>
  1. @interface ViewController ()<MAMapViewDelegate,AMapLocationManagerDelegate>
  2. @property (nonatomic, strong) MAMapView *mapView;//地图视图
  3. @property (nonatomic, strong) AMapLocationManager *locationManager;//定位管理者
  4. @end
  1. - (MAMapView *)mapView{
  2. if (!_mapView) {
  3. _mapView = [[MAMapView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), CGRectGetHeight(self.view.bounds))];
  4. _mapView.delegate = self;
  5. _mapView.mapType = MAMapTypeStandard;//设置地图类型
  6. _mapView.showTraffic= YES;//是否显示交通图
  7. [self.locationManager startUpdatingLocation];//开始定位
  8. [_mapView setUserTrackingMode: MAUserTrackingModeFollow animated:YES];//定位以后改变地图的图层显示。
  9. [self.view addSubview:_mapView];
  10. }
  11. return _mapView;
  12. }
  13. - (AMapLocationManager *)locationManager{
  14. if (!_locationManager) {
  15. _locationManager = [[AMapLocationManager alloc] init];
  16. _locationManager.delegate = self;
  17. }
  18. return _locationManager;
  19. }
  20. - (void)viewDidLoad {
  21. [super viewDidLoad];
  22. [self locationManager];
  23. [self mapView];
  24. }
  • 完成定位和“大头针”功能
  1. //AMapLocationManager代理方法位置更新以后回调。
  2. - (void)amapLocationManager:(AMapLocationManager *)manager didUpdateLocation:(CLLocation *)location
  3. {
  4. NSLog(@"location:{lat:%f; lon:%f; accuracy:%f}", location.coordinate.latitude, location.coordinate.longitude, location.horizontalAccuracy);
  5. }
  6. -(void) viewDidAppear:(BOOL)animated
  7. {
  8. [super viewDidAppear:animated];
  9. MAPointAnnotation *pointAnnotation = [[MAPointAnnotation alloc] init];
  10. pointAnnotation.coordinate = CLLocationCoordinate2DMake(31.982527, 118.735046);
  11. pointAnnotation.title = @"宏创科技";
  12. pointAnnotation.subtitle = @"国家广告产业园XXX";
  13. [self.mapView addAnnotation:pointAnnotation];
  14. }
  15. //MAMapView代理方法,用来设置大头针
  16. - (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id )annotation
  17. {
  18. if ([annotation isKindOfClass:[MAPointAnnotation class]])
  19. {
  20. static NSString *pointReuseIndentifier = @"pointReuseIndentifier";
  21. MAPinAnnotationView*annotationView = (MAPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:pointReuseIndentifier];
  22. if (annotationView == nil)
  23. {
  24. annotationView = [[MAPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:pointReuseIndentifier];
  25. }
  26. annotationView.canShowCallout= YES; //设置气泡可以弹出,默认为NO
  27. annotationView.animatesDrop = YES; //设置标注动画显示,默认为NO
  28. annotationView.draggable = YES; //设置标注可以拖动,默认为NO
  29. annotationView.pinColor = MAPinAnnotationColorPurple;
  30. return annotationView;
  31. }
  32. return nil;
  33. }

ios开发--高德地图SDK使用简介的更多相关文章

  1. iOS开发——百度地图SDK集成

    (正在形成文档,待更新……)

  2. iOS开发UI篇—核心动画简介

    转自:http://www.cnblogs.com/wendingding/p/3801036.html iOS开发UI篇—核心动画简介 一.简单介绍 Core Animation,中文翻译为核心动画 ...

  3. 使用高德地图SDK获取定位信息

    使用高德地图SDK获取定位信息 第一步: 在高德官网下载SDK,如我这里需要获取定位信息,故仅下载"定位功能" 第二步: 注册成为开发者,并创建应用获取相应的key.其中,在使用A ...

  4. 百度地图开发-引入地图SDK并配置 02

    百度地图开发-引入地图SDK并配置 02 通过上一篇文章的介绍,基本了解百度地图的基本信息,接下来就让我们一起来实际在项目中操作,显示出地图. 01 引入地图SDK 首先需要新建一个空白的Androi ...

  5. iOS开发系列--地图与定位

    概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...

  6. iOS导入高德地图出现缺失armv7--"Undefined symbols for architecture armv7"

    在已有项目中使用pod导入高德地图,报了以下错误: ld: warning: directory not found for option '-L/Users/paul/iOS/yun-hui-yi/ ...

  7. 转-iOS开发系列--地图与定位

    来自: http://www.cnblogs.com/kenshincui/p/4125570.html#autoid-3-4-0 概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功 ...

  8. iOS开发---百度地图配置流程,2.6.0 版本 支持64位

      1.首先需要在百度地图下载最新SDK:地址: http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 2. ...

  9. iOS开发----调用地图导航

    注意:本文章下的代码有个别变量未知,所以是不能直接跑通的,我也是转别人的 在IOS6.0系统后,兼容iOS5.0与iOS6.0地图导航,需要分两个步骤 #define SYSTEM_VERSION_L ...

随机推荐

  1. vim配置python开发环境

    vim配置python开发环境 一.安装vim sudo apt-get install vim 二.vim基础配置 #Centos6.5 /usr/share/vim/vim72 vi /etc/v ...

  2. CLR via C# 线程基础知识读书笔记

    1.线程的开销 a.线程内核对象 b.线程环境块 c.用户模式栈(1MB) d.内核模式栈 f.DLL线程连接和线程分离通知 2.线程的优先级由进程优先级和线程优先级共同组成 3.进程中所有的前台线程 ...

  3. C# sogou地图API应用总结

    地图的初始化1.添加引用地图的API文件: <script src="http://api.go2map.com/maps/js/api_v2.5.1.js" type=&q ...

  4. VS2010打开VS2012解决方法

    VS2012中对C#的支持度非常好,不管是编写方便程度(不需要插件就能高亮代码及代码自动提示功能),还对MFC的一些功能优化很多. 我们可以修改两个工程文件来把VS2012的工程文件一直到VS2010 ...

  5. FastLoad错误 — RDBMS error 2634

    我们来看一下下面这条语句: BEGIN LOADING stu_flERRORFILES error_1, error_2;   如果此时已经存在error_1或error_2表,那么将会报错,信息如 ...

  6. 【ajax跨域】原因原理解决

    1.安全,跨域cookie iframe 2.很简单,就是利用<script>标签没有跨域限制的“漏洞”(历史遗迹啊)来达到与第三方通讯的目的.当需要通讯时,本站脚本创建一个<scr ...

  7. iOS中引用计数内存管理机制分析

    在 iOS 中引用计数是内存的管理方式,虽然在 iOS5 版本中,已经支持了自动引用计数管理模式,但理解它的运行方式有助于我们了解程序的运行原理,有助于 debug 程序. 操作系统的内存管理分成堆和 ...

  8. 【开发记录】iOS中使用 Reachability 检测网络

    如果你想在iOS程序中提供一仅在wifi网络下使用(Reeder),或者在没有网络状态下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测. 写本文的目的 了解Re ...

  9. Qt html 界面混合编程

    Qt部分 项目文件.pro Qt += webenginewidgets webchannel 创建WebEngineView #include <QtWebEngineWidgets> ...

  10. OC中的点语法,成员变量的作用域

    点语法 点语法本质是函数的调用,不是像java中那样,是用来访问成员变量的:oc中访问成员变量是用 -> 访问的: Person *p = [Person new]; p.age = 10; / ...