IOS高德地图导航,搜索周边,语音播报,地理围栏,轨迹绘制等深入了解

先来点前言:本人在开发项目过程中,遇到各种高德的神操作,通过学习官方sdk文档,结合demo,进行了二次封装,要实现这几个功能只需几句代码。写下这篇博客,希望大家给予佐证,共同进步。

废话不多说,直奔主题。

一、准备工作

我们要做高德地图相关的应用,首先得注册一个高德账号(一般以公司名义注册,如果是个人项目,就注册个人账号)。进入高德开放平台注册。当然有高德账号的同仁请忽略这一步。当你注册并登陆成功后我们就可以正式进入高德开发之旅了。

1、进入控制台

QQ20170708-101558.png

2、创建应用

QQ20170708-102327.png
QQ20170708-102643.png

3、添加key

QQ20170708-102824.png
QQ20170708-103058.png

Bundle ID

QQ20170708-103222.png

4、利用pod导入高德的相关sdk

//相信pod大家都用过,我就不具体介绍如何安装和使用cocoaPods了
pod 'AFNetworking'
pod 'AMap3DMap', '~>4.4.1'
pod 'AMapSearch' #搜索服务SDK
pod 'AMapLocation'
pod 'AMapNavi'#这个要放到其他高德sdk后
pod 'JZLocationConverter'#gps纠偏

假如不懂cocoapods使用的,看这篇文章http://blog.csdn.net/e62ces0iem/article/details/73550884

5、将高德生成的key放到APPdelegate.h文件中

QQ20170708-104047.png
//基础定位类
#import <AMapFoundationKit/AMapFoundationKit.h>
//高德地图基础类
#import <MAMapKit/MAMapKit.h>
//定义一个宏来保存高德的apikey
#define APIKEY @"a80ff3043934c4cb4a3af35b6b20b32"

6、在APPdelegate.m文件里设置相关内容

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //设置APIKEY
    [AMapServices sharedServices].apiKey = APIKEY;
    [AMapServices sharedServices].enableHTTPS = YES;
    return YES;
}

7、在plist文件中开启定位服务

QQ20171219-180121.png

二、实现地图相关功能

1、将我封装好的包导入项目中

QQ20170708-135921.png

2、导入头文件

#import "MapManager.h"

3、只显示地图和小蓝点

- (void)viewDidLoad {
    [super viewDidLoad];
    //不管进行什么地图操作都要先定位自己位置
    [[MapManager sharedManager] initMapView];
    
}

4、给指定坐标添加一个大头针


- (void)viewDidLoad {
    [super viewDidLoad];
    [[MapManager sharedManager] initMapView];
    CLLocationCoordinate2D coor;
    coor.latitude = 30.566666;//
    coor.longitude = 104.054536;
    [[MapManager sharedManager] addAnomationWithCoor:coor];
}

5、搜索附近并大头针标记(能实时导航,带语音)

- (void)viewDidLoad {
    [super viewDidLoad];
    [[MapManager sharedManager] initMapView];
    [self searchAround];
}
//附近搜索
-(void)searchAround{
    //可以设置大头针图片,没有设置图片就用默认图片
//    [MapManager sharedManager].destinationImgName = @"首牛";
//    [MapManager sharedManager].locationPointImgName = @"首牛";
    [[MapManager sharedManager] searchAroundWithKeyWords:@"景点"];//关键词可以随便写,只要高德能搜索的
}

6、假如要做历史轨迹连线,最好新建一个VC

- (void)viewDidLoad {
    [super viewDidLoad];
    MapManager *manager = [MapManager sharedManager];
    [manager initMapView];
    [manager.mapView setZoomLevel:13.1 animated:YES];
    //存放历史轨迹点坐标的数组
    NSArray *array = @[@"39.822136,116.35095",@"39.832136,116.42095",@"39.902136,116.42095",@"39.902136,116.44095"];
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [manager drawLineWithArray:array];
        [manager addAnomationWithArray:array];
    });
    
}

三、来谈谈纠偏功能的实现和语音播报功能的实现

1、GPS纠偏一般用于硬件获取的GPS转为高德的GPS,因为相同地方每种地图的GPS是不相同的,所以需要用到这个三方JZLocationConverterGitHub下载地址,作者有详细的使用指南。

2、语音播报功能

(1)首先把我这个包拖到你的工程里
QQ20170708-143020.png
(2)代码实现
//重写高德导航自带的一个回调方法中开启语音
- (BOOL)driveManagerIsNaviSoundPlaying:(AMapNaviDriveManager *)driveManager
{
    return [[SpeechSynthesizer sharedSpeechSynthesizer] isSpeaking];
}
//关闭导航的回调方法中关掉语音
-(void)driveViewCloseButtonClicked:(AMapNaviDriveView *)driveView{
    [self.driveManager stopNavi];
    [driveView removeFromSuperview];
    //停止语音
    [[SpeechSynthesizer sharedSpeechSynthesizer] stopSpeak];
}

四、demo下载地址及效果图

GitHub下载地址链接: https://github.com/deng690990/SF_GaoDeMAP

高德demo.gif

最后,运行该demo最好是在真机上,更能体现效果。注意假如你是用模拟器运行该demo,一定要确保你的模拟器已经设置了经纬度。

先点一下模拟器任意位置,然后如图操作:

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

推荐阅读更多精彩内容