iOS 高德自定义坐标轨迹绘制动画 类似与Keep的轨迹绘制
2、
自定义 线的图片,只需要在 rendererForOverlay 方法中,设置:
polylineRenderer.strokeImage = [UIImage imageNamed:@"jiantouD"]; //即可显示
注意图片的格式:用于生成笔触纹理id的图片(image需满足: 长宽相等,且宽度值为2的整数次幂; 如果您需要减轻绘制产生的锯齿,您可以参考AMap.bundle中的traffic_texture_blue.png的方式,在image两边增加部分透明像素.)。(简单说就是正方的图片,又明确方向的图片,默认方向为向下)
1、
demo : https://github.com/xushiyou23/AMapTesting
利用高德绘制线:1、绘制线 坐标数组每0.02s增加一次坐标点--2、移除原来点绘制线--3、添加新的+每绘制3次,让绘制线最后3组坐标在屏幕中 居中----循环1-3;最后让绘制线居中在屏幕中即可
代码:
#import "HomeViewController.h" ///绘制间隔
#define huizhiTimes 0.02
///居中点的个数
#define IntheMiddlePoint 2
///每次画线跳跃几个点
#define jumpPoints 3
@interface HomeViewController ()<MAMapViewDelegate>{ //绘制了多少点 和总个数对比
NSInteger huizhiNum; //绘制线
MAPolyline *commonPolyline;
//结束绘制
BOOL endHuizhi;
} ///需要居中显示的点
@property(nonatomic,strong) NSMutableArray * TenPointArray ;
@property (nonatomic, strong) NSMutableArray * pointArray;
@end @implementation HomeViewController ///触摸移动 开始绘制
-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ [self mapViewHUIZHI];
} - (void)viewDidLoad {
[super viewDidLoad]; // 加载地图
[self setMap]; [self.mapViewhome setMapType:MAMapTypeStandard];
self.pointArray=[NSMutableArray array]; } #pragma mark Map
-(void)setMap{ ///初始化地图
self.mapViewhome = [[MAMapView alloc] initWithFrame:self.view.frame];
self.mapViewhome.showsCompass= NO; // 设置成NO表示关闭指南针;YES表示显示指南针
///如果您需要进入地图就显示定位小蓝点,则需要下面两行代码
self.mapViewhome.showsUserLocation = NO;
[self.mapViewhome setZoomLevel: animated:YES];
self.mapViewhome.userTrackingMode = MAUserTrackingModeFollow;
self.mapViewhome.delegate =self;
///地图需要v4.5.0及以上版本才必须要打开此选项(v4.5.0以下版本,需要手动配置info.plist)
[AMapServices sharedServices].enableHTTPS = YES;
self.mapViewhome.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
///把地图添加至view self.mapViewhome.mapType = MAMapTypeNavi;
[self.view addSubview:self.mapViewhome]; } #pragma mark ---------------------------------绘制轨迹-
//创建数据
-(void)huizhiData{ huizhiNum = ;
_TenPointArray = [NSMutableArray array]; //di 中存放坐标
NSDictionary * di = @{@"latitude":dict[@"latitude"],@"longitude":dict[@"longitude"]}; //坐标数组
[self.pointArray addObject:di]; }
//绘制线
- (void)mapViewHUIZHI{ huizhiNum +=jumpPoints ;
if (huizhiNum>(_pointArray.count-)) {
huizhiNum =_pointArray.count-;
endHuizhi = YES;
} CLLocationCoordinate2D commonPolylineCoords[huizhiNum];
for (int i=; i<huizhiNum; i++) {
NSDictionary * dic = self.pointArray[i]; commonPolylineCoords[i].latitude= [dic[@"latitude"] doubleValue];
commonPolylineCoords[i].longitude=[dic[@"longitude"] doubleValue];
} [self.mapViewhome removeOverlay:commonPolyline];
//构造折线对象
commonPolyline = [MAPolyline polylineWithCoordinates:commonPolylineCoords count:huizhiNum];
//在地图上添加折线对象
[self.mapViewhome addOverlay: commonPolyline]; //设置地图中心位置
NSDictionary * huizhiDic2 = self.pointArray[huizhiNum];
MAPointAnnotation * a1= [[MAPointAnnotation alloc] init];
a1.coordinate = CLLocationCoordinate2DMake([huizhiDic2[@"latitude"] doubleValue], [ huizhiDic2[@"longitude"] doubleValue]); //划线 显示进行中的后10个点
if (_TenPointArray.count<IntheMiddlePoint)
{ [_TenPointArray addObject:a1];
}else{
[_TenPointArray replaceObjectAtIndex: withObject:a1];
} //设置地图中心位置 if(endHuizhi){
[self.mapViewhome showOverlays:@[commonPolyline] edgePadding:UIEdgeInsetsMake(IPHONEHIGHT(), IPHONEWIDTH(), IPHONEHIGHT(), IPHONEWIDTH()) animated:YES];
huizhiNum = ;
}else{ if (huizhiNum%==)
{ //开始居中 后面的点
[self.mapViewhome showAnnotations:_TenPointArray edgePadding:UIEdgeInsetsMake(IPHONEHIGHT(), IPHONEWIDTH(), IPHONEHIGHT(), IPHONEWIDTH()) animated:YES];
} } } #pragma mark - MAMapViewDelegate 样式
-(MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id <MAOverlay>)overlay {
//绘制线
if ([overlay isKindOfClass:[MAPolyline class]]) {
if(huizhiNum<){
[self performSelector:@selector(mapViewHUIZHI) withObject:nil afterDelay:huizhiTimes];
}
MAPolylineRenderer *polylineRenderer = [[MAPolylineRenderer alloc] initWithPolyline:overlay];
polylineRenderer.lineWidth= .f;
polylineRenderer.strokeColor= [UIColor greenColor];
polylineRenderer.lineJoinType = kMALineJoinRound;
polylineRenderer.lineCapType= kMALineCapRound;
return polylineRenderer;
}
return nil;
} @end
iOS 高德自定义坐标轨迹绘制动画 类似与Keep的轨迹绘制的更多相关文章
- iOS-自定义Model转场动画-仿酷我音乐播放器效果
周末,闲来无事,仿写了酷我音乐播放器效果: 效果图如下: 实现思路: 1.实现手势处理视图旋转 2.自定义Model动画: 1.手势是利用了一个UIPanGestureRecognizer手势: 注意 ...
- iOS CATransition 自定义转场动画
https://www.jianshu.com/p/39c051cfe7dd CATransition CATransition 是CAAnimation的子类(如下图所示),用于控制器和控制器之间的 ...
- Android -- 自定义ViewGroup+贝塞尔+属性动画实现仿QQ点赞效果
1,昨天我们写了篇简单的贝塞尔曲线的应用,今天和大家一起写一个QQ名片上常用的给别人点赞的效果,实现效果图如下: 红心的图片比较丑,见谅见谅(哈哈哈哈哈哈).... 2,实现的思路和原理 从上面的效果 ...
- iOS CAShapeLayer、CADisplayLink 实现波浪动画效果
iOS CAShapeLayer.CADisplayLink 实现波浪动画效果 效果图 代码已上传 GitHub:https://github.com/Silence-GitHub/CoreAnima ...
- 自定义 Layer 属性的动画
默认情况下,CALayer 及其子类的绝大部分标准属性都可以执行动画,无论是添加一个 CAAnimation 到 Layer(显式动画),亦或是为属性指定一个动作然后修改它(隐式动画). 但有时候 ...
- iOS中 自定义cell分割线/分割线偏移 韩俊强的博客
在项目开发中我们会常常遇到tableView 的cell分割线显示不全,左边会空出一截像素,更有甚者想改变系统的分割线,并且只要上下分割线的一个等等需求,今天重点解决以上需求,仅供参考: 每日更新关注 ...
- 18个超有趣的SVG绘制动画赏析
SVG作为时下比较新颖的技术标准,已经建立了很多基于SVG的前端项目.由于SVG在绘制路径上非常灵活,我们将很多网页上的元素使用SVG来绘制而成,有各种人物.小图标.小动画等等.今天我们收集了18个非 ...
- 程序猿必备的10款超有趣的SVG绘制动画赏析
SVG作为时下比较新颖的技术标准,已经建立了很多基于SVG的前端项目.由于SVG在绘制路径上非常灵活,我们将很多网页上的元素使用SVG来绘制而成,有各种人物.小图标.小动画等等.今天我们收集了10个非 ...
- 『科学计算』科学绘图库matplotlib学习之绘制动画
基础 1.matplotlib绘图函数接收两个等长list,第一个作为集合x坐标,第二个作为集合y坐标 2.基本函数: animation.FuncAnimation(fig, update_poin ...
随机推荐
- Sublime Text 快捷键列表
Sublime Text 快捷键列表 快捷键按类型分列如下: 补充:1.快速的创建一个html页 :ctrl+n创建一个新的文件-->右下角选择文件类型-->输入英文"!&quo ...
- Android WebView的HTML中的select标签不起作用
Android WebView的HTML中的select标签不起作用 经过查询资料,了解到android对html里的select标签是弹出一个原生的选择器. 问题: Webview中的select没 ...
- selenium chrome在新标签页打开链接的方法
目前chrome是我在实现webdriver时运行最稳定的浏览器,如何利用webdriver打开多个标签页和链接呢,到处查找得到的往往只是如何打开标签页.打开标签页很简单,chrome浏览器打开标签页 ...
- iOS----------developerDiskImage
真机测试时提示Could not find Developer Disk Image.这该怎么办???? 这是由于真机系统过高或者过低,Xcode中没有匹配的配置包文件,我们可以通过这个路径进入配置包 ...
- 基础环境系列:Apache2.4.37
一.安装 进入官网http://www.apache.org/,滑至最下方,排名第一的HTTP Server就是我们需要的. 当前时间的最新版本是2.4.37.呃……并没有msi版本,我们选择最后一个 ...
- QT多线程的使用
今天给大家介绍三种QT里面使用多线程的方法 1.继承QThread并且重写run方法来实现多线程 #ifndef MYQTHREAD_H #define MYQTHREAD_H #include &l ...
- Python面试笔记二
一.算法 1.归并排序 2.快速排序 3.算法复杂度 4.哈希表数据结构 二.数据库 1.设计一个用户关注系统的数据库表 1.设计一个用户关注系统的数据库表,写三个相关的SQL语句两张表,一张user ...
- LeetCode算法题-Perfect Number(Java实现)
这是悦乐书的第249次更新,第262篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第116题(顺位题号是507).我们定义Perfect Number是一个正整数,它等于 ...
- QQ的孤独
接触网络到现在,已是好多年前的事了.初识网络犹如初恋般,充满了新鲜和好奇,于是,从聊天室到QQ,MSN,邮箱,再去BBS.然后有了博客^^^^^^ 那时的网络于我是那般充满诱惑,整天穿梭其中,乐此不彼 ...
- python离线安装包
一.用download命令离线下载包 *.whl , 这个方法好像python3.7以上才能用 那么我的requirement.txt内容就是: django==1.8.11 simplejson= ...