基于百度地图记录运动轨迹案例分析与实现

目录##

一、下载百度地图SDK

二、 工程配置
1. 新建Xcode工程
2. 获取Bundle Identifie
3. 申请key
4. 导入框架配置工程
第一步: 引入BaiduMapAPI.framework
第二步: 引入所需的系统库
第三步: 环境配置
第四步: 引入mapapi.bundle资源文件
第五步: 引入头文件
5. 初始化 BMKMapManager
第一步: 在AppDelegate.m 中添加 BMKMapManager的定义
第二步: 遵守 BMKGeneralDelegate 实现其两个代理方法,目的是为了得知本应用是否联网成功、授权成功.
第三步: 在AppDelegate.m文件中添加对BMKMapManager的初始化,并填入申请的授权Key.

三、实战记录运动轨迹
1. 初始化工作
第一步:引入相关头文件,声明相关属性
第二步:初始化相关方法
第三步:初始化MapView后设置其一些属性
第四步:初始化百度位置服务
2. 开始定位
第一步:强调内容开启定位的方法
第二步: 停止服务的方法函数
第三步: 停止失败调用的方法函数
第四步: 用户更新调用的方法函数
第五步: 用户方向更新调用的方法函数
3. 存储更新的用户地理位置
4. 绘制轨迹线
第一步:开始绘制路线
第二步: 绘制起始大头针
第三步: 清空标记
第四步:设置地图范围
第五步: 生成相应的覆盖物

四、最终的效果图展示

五、工程源码

一、下载百度地图SDK

  1. 首先需要登录百度开放平台下载iOS地图SDK,推荐下载全新Framework形式的静态库,配置更加简单方便,具体看下图:
    这里写图片描述

这里写图片描述

二、 工程配置
1. 新建一个Xcode工程

2. 获取Bundle Identifier
通过project->target->general可以看到本应用的Bundle Identifie,我们正是需要这串字符串去百度开发平台申请一个Key用于百度地图的调用。如图:
这里写图片描述

3. 申请key
登录百度开放平台后,点击右上角的API控制台进入申请key的界面,点击创建应用,在“安全码”处填入你的应用的Bundle Identifie,具体信息填写请看下图:
这里写图片描述

这里写图片描述

4. 导入框架配置工程
以下主要参考百度SDK配置文档:
*** 第一步 、引入BaiduMapAPI.framework***
百度地图SDK提供了模拟器和真机两种环境所使用的framework,分别存放在libs/Release-iphonesimulator和libs/Release-iphoneos文件夹下,开发者可根据需要使用真机或模拟器的包,如果需同时使用真机和模拟器的包,可以使用lipo命令将设备和模拟器framwork包中的BaiduMapAPI文件合并成一个通用的文件,命令如下:

lipo -create Release-iphoneos/BaiduMapAPI.framework/BaiduMapAPI Release-iphonesimulator/BaiduMapAPI.framework/BaiduMapAPI -output Release-iphoneos/BaiduMapAPI.framework/BaiduMapAPI

此时Release-iphoneos文件夹下的BaiduMapAPI.framework即可同时用于真机和模拟器。将所需的BaiduMapAPI.framework拷贝到工程所在文件夹下。在TARGETS->Build Phases-> Link Binary With Libaries中点击+按钮,在弹出的窗口中点击“Add Other”按钮,选择BaiduMapAPI.framework文件添加到工程中。
注:静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将Xcode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As设置为Objective-C++。

第二步、引入所需的系统库
百度地图SDK中提供了定位功能和动画效果,v2.0.0版本开始使用OpenGL渲染,因此您需要在您的Xcode工程中引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、
SystemConfiguration.framework、CoreGraphics.framework、
Security.framework。添加方式:在Xcode的Project -> Active Target ->Build Phases ->Link Binary With Libraries,添加这几个framework即可。

第三步、环境配置
在TARGETS->Build Settings->Other Linker Flags中添加-ObjC。

第四步、引入mapapi.bundle资源文件
如果使用了基础地图功能,需要添加该资源,否则地图不能正常显示
mapapi.bundle中存储了定位、默认大头针标注View及路线关键点的资源图片,还存储了矢量地图绘制必需的资源文件。如果您不需要使用内置的图片显示功能,则可以删除bundle文件中的image文件夹。您也可以根据具体需求任意替换或删除该bundle中image文件夹的图片文件。
方法:选中工程名,在右键菜单中选择Add Files to “工程名”…,从BaiduMapAPI.framework||Resources文件中选择mapapi.bundle文件,并勾选“Copy items if needed”复选框,单击Add按钮,将资源文件添加到工程中。

第五步、引入头文件
在使用SDK的类引入头文件:

#import <BaiduMapAPI/BMapKit.h>//引入所有的头文件
#import <BaiduMapAPI/BMKMapView.h>//只引入所需的单个头文件

5. 初始化 BMKMapManager
第一步: 在AppDelegate.m 中添加 BMKMapManager的定义:
这里写图片描述

第二步: 遵守 BMKGeneralDelegate 实现其两个代理方法,目的是为了得知本应用是否联网成功、授权成功:
这里写图片描述

第三步: 在AppDelegate.m文件中添加对BMKMapManager的初始化,并填入申请的授权Key,示例如下:
这里写图片描述

三、实战记录运动轨迹
一条完整的运动轨迹是由一组地理位置坐标数组描点连线构成的,我们需要实时监测用户位置的变更,将最新的符合限定条件的地位位置数据存放到数据中,调用SDK中的画折线方法绘制运动轨迹。

1. 初始化工作
第一步: 引入相关头文件,声明相关属性
这里写图片描述

第二步: 初始化相关方法
这里写图片描述

第三步:初始化MapView后设置其一些属性
这里写图片描述

第四步:初始化百度位置服务
这里写图片描述

2. 开始定位
第一 强调内容开启定位的方法
这里写图片描述

第二 停止服务的方法函数
这里写图片描述

第三 停止失败调用的方法函数
这里写图片描述

第四 用户更新调用的方法函数
这里写图片描述

第五 用户方向更新调用的方法函数
这里写图片描述

3. 存储更新的用户地理位置
这里写图片描述

4. 绘制轨迹线
第一 开始绘制路线
这里写图片描述

第二 绘制起始大头针
这里写图片描述

第三 清空标记
这里写图片描述

第四 设置地图范围
这里写图片描述

第五 生成相应的覆盖物
这里写图片描述

四、最终的效果图展示
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

五、工程源码
源码下载地址:http://download.csdn.net/detail/baihuaxiu123/9496390
关注我的简书网址:http://www.jianshu.com/users/0873ab6768a6/latest_articles

图解AI CSDN认证博客专家 数据分析 机器学习 深度学习
致力于:机器学习、深度学习、数据分析、算法、架构、C/C++、Rust、HTML5/webApp、Go、Python、Lua...
已标记关键词 清除标记
概要介绍: 本课程主要是介绍并实战一款java中间件~redisson,介绍redisson相关的核心技术栈及其典型的应用场景,其中的应用场景就包括布隆过滤器、限流器、短信发送、实时/定时邮件发送、数据字典、分布式服务调度等等,在业界号称是在java项目里正确使用redis的姿势。本课程的目标就在于带领各位小伙伴一起学习、攻克redisson,更好地巩固自己的核心竞争力,而至于跳槽涨薪,自然不在话下!  课程内容: 说起redisson,可能大伙儿不是很熟悉,但如果说起redis,想必肯定很多人都晓得。没错,这家伙字如其名,它就是架设在redis基础上的一款综合性的、新型的中间件,号称是java企业级应用开发中正确使用redis的姿势/客户端实例。 它是架设在redis基础之上,但拥有的功能却远远多于原生Redis 所提供的,比如分布式对象、分布式集合体系、分布式锁以及分布式服务调度等一系列具有分布式特性的对象实例… 而这些东西debug将在本门课程进行淋漓尽致的介绍并实战,除此之外,我们将基于spring boot2.0搭建的多模块项目实战典型的应用场景:对象存储、数据字典、短信发送、实时/定时邮件发送、布隆过滤器、限流组件、分布式服务调度....课程大纲如下所示: 下面罗列一下比较典型的核心技术栈及其实际业务场景的实战,如下图所示为redisson基于订阅-发布模式的核心技术~主题Topic的实际业务场景,即实时发送邮件: 而下图则是基于“多值映射MultiMap”数据结构实战实现的关于“数据字典”的缓存管理: 除此之外,我们还讲解了可以与分布式服务调度中间件dubbo相媲美的功能:分布式远程服务调度,在课程中我们动手搭建了两个项目,用于分别充当“生产者”与“消费者”角色,最终通过redisson的“服务调度组件”实现服务与服务之间、接口与接口之间的调用!  课程收益: (1)认识并掌握redisson为何物、常见的几种典型数据结构-分布式对象、集合、服务的应用及其典型应用场景的实战; (2)掌握如何基于spring boot2.0整合redisson搭建企业级多模块项目,并以此为奠基,实战企业级应用系统中常见的业务场景,巩固相应的技术栈! (3)站在项目管理与技术精进的角度,掌握对于给定的功能模块进行业务流程图的绘制、分析、模块划分、代码实战与性能测试和改进,提高编码能力与其他软实力; (4)对于Java微服务、分布式、spring boot精进者而言,学完本课程,不仅可以巩固提高中间件的实战能力,其典型的应用场景更有助于面试、助力相关知识点的扫盲! 如下图所示: 关键字:Spring Boot,Redis,缓存穿透,缓存击穿,缓存雪崩,红包系统,Mybatis,高并发,多线程并发编程,发送邮件,列表List,集合Set,排行榜,有序集合SortedSet,哈希Hash ,进阶实战,面试,微服务、分布式 适用人群:redisson学习者,分布式中间件实战者,微服务学习者,java学习者,spring boot进阶实战者,redis进阶实战者
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__0809 返回首页
实付 39.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值