// 开始,公司要求制作一段跑步轨迹 在地图上的 动画回放, 传入一段经纬度,

开始一想,这不是很简单吗, 高德地图有可以把经纬度转换成坐标点的方法

/**

* @brief 将经纬度转换为指定view坐标系的坐标

* @param coordinate 经纬度

* @param view 指定的view

* @return 基于指定view坐标系的坐标

*/

- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(UIView *)view;

// 我把经纬度转换成坐标点, 然后构建 path

/* 构建path, 调用着负责释放内存. */

- (CGMutablePathRef)pathForPoints:(CGPoint *)points count:(NSUInteger)count

{

if (points == NULL || count <= 1)

{

return NULL;

}

CGMutablePathRef path = CGPathCreateMutable();

CGPathAddLines(path, NULL, points, count);

return path;

}

//  在然后直接用 path ,初始化一个 CAShapeLayer ,做成动画不就成了 吗, 在它跑完之后直接删除, 再用 高德地图的折线替换,

// 这种方法也可以, 但是后来需求改了, 要求地图旋转,并且地图中心点一直在跑动的点上,

这样,我以屏幕坐标构建的 path 一旦地图旋转, 就全乱了,

// 后来我又想到一个办法, 我从地图手机上定位画线得到的灵感, 我把经纬度点两个两个连成一个个短的折线,放到一个数组里面 ,然后定义了一个 index 属性,  再用一个定时器不停的循环, 在定时器的方法中,用

[self.mapView addOverlay:self.mapOverlayArr[self.index] level:MAOverlayLevelAboveRoads];

不停加载线路在地图上, 同时把地图的中心点, 定位在 经纬度数组取到的最新的经纬度上

CLLocation * location = self.locationArray[self.index];

[self.mapView setCenterCoordinate:location.coordinate animated:NO];

,这样就能保证地图中心一直在跑动的点上, 而且定时器  方法  加载线路够快的话, 就能产生动画效果,

然而, 又出现了问题, 定时器不停的运行

mapView 不停的加载 addOverlay ,使得屏幕非常卡, 经纬度少的话还看不出来, 一旦经纬度多了, 卡的不要不要的, 完全受不了, 而且手机非常烫, 电池都快烧坏了,, 所以这种方法不可行, 至少不完善

// 后来我研究高德地图的画线方法, 发现一个 方法

/**

* @brief 重新设置折线坐标点. since 5.0.0

* @param coords 指定的经纬度坐标点数组, C数组,内部会做copy,调用者负责内存管理

* @param count 坐标点的个数

* @return 是否设置成功

*/

- (BOOL)setPolylineWithCoordinates:(CLLocationCoordinate2D *)coords count:(NSInteger)count;

// 这个方法只用一条折线, 但是可以不停的改变这条折线的位置,

终于利用这个方法 不卡了, 画线的过程中 FPS 60 左右, 完美

// 因为文件太大就 不上传了

iOS 高德地图轨迹回放的 思路, 及方法的更多相关文章

  1. Google地图轨迹回放模拟

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 高德地图与CAD图叠加显示方法汇总及优缺点分析

    前言 ​ 高德地图应用在许多领域,平常我们用的地图导航,除过正常的地图导航指引功能之外,其实还有很多实用的功能.如高德影像地图应用在包括地理.土地测量.水文学.生态学.气象学以及海洋学等方面.Auto ...

  3. iOS:高德地图的使用

    本人花了点时间集成了高德地图的几乎所有的功能,包含:地图的显示.地图的绘制.地图的定位.地图的POI数据检索.地图的线路规划.地图导航等下载地址如下:https://github.com/xiayua ...

  4. 使用GMap.NET类库,实现地图轨迹回放。(WPF版)

    前言 实现轨迹回放,GMap.NET有对应的类GMapRoute.这个类函数很少,功能有限,只能实现简单的轨迹回放.要实现更复杂的轨迹回放,就需要自己动手了. 本文介绍一种方法,可以实现复杂的轨迹回放 ...

  5. IOS高德地图逆地理编码定位+网络判断

    先说下这功能的流程,  流程:判断用户是否联网--->获取用户地理位置经纬度--->通过经纬度去查询地理位置名称 //高德地图 @property (nonatomic, strong) ...

  6. iOS高德地图让指定区域或者点显示在屏幕中间

    对于高德地图也是一个新手,很多功能看文档,问技术 或者高德群里讨论  群号:204668425 在我们需求中绘制的有 圆 折线 不规则图形 方式,打开地图指定的绘制图形置于屏幕中间 1.首先创建一个数 ...

  7. iOS - 高德地图步行线路规划多点多条线路

    项目集成高德地图遇到的问题: 高德地图的官方步行导航只针对单个起始点单条线路,驾车导航才有途径点多线路.现在项目是要步行导航多个点多条线路

  8. iOS高德地图使用-搜索,路径规划

    项目中想加入地图功能,使用高德地图第三方,想要实现确定一个位置,搜索路线并且显示的方法.耗了一番功夫,总算实现了. 效果 WeChat_1462507820.jpeg 一.配置工作 1.申请key 访 ...

  9. iOS高德地图自定义annotation添加不同图片

    1.model类里面添加index #import <MAMapKit/MAMapKit.h> #import <AMapSearchKit/AMapCommonObj.h> ...

随机推荐

  1. l类与对象课后作业

    java 的初始化规律 执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”. 执行类的构造函数. 类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行.因 ...

  2. linux 操作 json文件

    Linux 下 操作 json 文件神器 jq.  jq yum install jq -y 查看一个 file.json 文件 # jq . file.json JSON (JavaScript O ...

  3. 第20月第29天 cocoa抽象工厂 cocoapods组件化 cocoapods升级

    1. 在 Cocoa Touch 框架中,类簇是抽象工厂模式在 iOS 下的一种实现,以 NSArray 举例,将原有的 alloc+init 拆开写: id obj1 = [NSArray allo ...

  4. windows Apache 环境下配置支持HTTPS的SSL证书

    windows Apache 环境下配置支持HTTPS的SSL证书 1.准备工作 1)在设置Apache + SSL之前, 需要做: 安装Apache, 下载安装Apache时请下载带有SSL版本的A ...

  5. python购物车作业

    # -*- coding:utf8 -*- # Author:Wang Yao goods = [{"name": "电脑", "price" ...

  6. 爬虫代理及ssl验证

    IP代理:import requests url='https://weibo.com/' proxies={ 'http':'116.196.66.197:99999' } # 此处的proxies ...

  7. CPU火焰图

    y轴:栈深度 x轴:cpu时间 长方形:一个栈(方法) 长度:出现在监视器中的时长(占用cpu的时间) 其他:从左到右的顺序只是按字母排序,无其他意义 火焰图就是看顶层的哪个函数占据的宽度最大.只要有 ...

  8. maven(一) 一 修改仓库存放路径

    一.修改仓库存放路径 maven默认的仓库是在C盘下的,这样当重新装系统的时候,仓库就要重新建了.因此可以修改默认存放的位置. 修改仓库的地址在maven安装包(即apache-maven-bin)下 ...

  9. 小程序学习(冒泡,快速创建文件,以及tarbar)

    1.关于小程序的事件冒泡机制 例如: <view catchtap="opp"> <text>当前内容</text> </view> ...

  10. wx小程序-起航!

     手动创建 入口配置文件 app    页面文件新创建一个文件夹 然后在里面分类 1.文件夹名可以不一样,但是里面的wxml,wxss,json 等文件名必须保持一致 2.app.json 入口文件, ...