在城市规划、统计、交通等行业,地图可视化已成为最直接也最吸引眼球的一种表达方式。例如人群迁徙、人口流动、OD出行、职住分析、客流来源等众多场景都需要用到飞线效果呈现。

2D飞线效果图

随着可视化技术的进一步发展,传统的2D飞线效果略显单调,而3D飞线可以展示更丰富、更直观、更炫酷的效果。

3D飞线效果图

前不久,百度地图慧眼结合地图可视化技术发布了《帝都24小时图鉴》(戳这里查看原文),该项目受到行业内许多技术爱好者的一致好评,更有小伙伴前来咨询:文中炫酷的3D飞线效果是如何实现的?今天,就让百度地图慧眼前端工程师带你探寻“3D飞线”飞起来的秘密。

01 元素准备

为了实现上图的3D飞线效果,我们需要先分析一下飞线的构成元素。大致上来说,一个完整的飞线效果,无论是2D还是3D,都是由地点、连接线和连接线上的动画点缀构成的。下面,带大家一步步来看看每个部分的实现过程。

02 地点圆的实现

地点圆的组成元素有两样,一个静态的圆形和一个向外逐渐扩散并变透明的圆环。画出这两个图形并不难,但是怎么让这个扩散的圆环动起来呢?

要实现动画,我们可以首先想象一个场景:在一个小本子上的每一页都画一个一模一样的没有腿的小人儿,再在每一页给这个小人画上位置不同的腿,然后快速翻动本子,就可以看到小人儿奔跑的动画了。

现在圆形和圆环都已经画好了,为了让圆环动起来,就需要使用一个名为requestAnimationFrame的函数,简称rAF,rAF是浏览器里专门用于动画效果的一个函数。所以接下来我们在全局设置一个rAF让它一直循环,然后在其中进行一些动画操作,比如这里修改圆环的大小和透明度。而这个rAF就是“画腿”的过程。

03 连接线的实现

画完了点,我们就要开始准备连接线了。画一条连接线很简单,但是这里为了让它的效果更丰富,就需要处理了一下线条的细节:

1)通过贝塞尔曲线算法,将直线拉成曲线,在3D视角下看起来更有张力。

2)给组成曲线的每个顶点赋值不同的颜色,达到颜色、透明度渐变的效果,使其看起来不那么单调。

04 让线“飞起来”

完成了上述的准备工作,接下来才是重头戏。

首先,我们在连接线的轨迹上再给它附着上一根带有宽度的线作为点缀,为了避免这根点缀的线看起来太呆,我们用三角函数处理一下它的宽度,让它看起来扭曲一点。然后,我们就要用到上文所说的rAF让它动起来了!

那么问题来了,控制颜色和透明度很简单,该怎么控制它按轨迹移动以及出现与消失呢?

这里用到一个小技巧,我们知道“线”有一个实线与虚线的属性,在这里我们把这根点缀线设置成虚线,然后通过在rAF里修改虚线的dashOffset属性,让它沿着连接线的轨迹一直偏移,就可以在视觉上造成移动的效果了~另外,还可以在rAF里同时改变点缀线的宽度,造成一种“呼吸感”的动画效果,这样上面的动画就完成了。

可是这样的效果还略显呆板,太过整齐划一的动画看久了容易审美疲劳,所以我们再给这个虚线的长度加一份随机的偏移,让它们有一种不规律感。这样,最终版3D飞线就完成了!

05 更多可能效果

之所以说在3D场景,飞线的效果更丰富,就是因为在上面的基础上,我们可以继续发挥,做出更多效果、适配更多场景的飞线~

换个贴图后的样子
模仿喷泉的样子
模仿流星的样子

06 应用成效

百度地图慧眼3D飞线可视化技术,使得人群迁徙、人口流动、OD出行、职住分析、客流来源等场景得以生动、形象表达,有助于城市规划、统计、交通等行业的可视化管理。下图是百度地图慧眼人口监测可视化大屏的效果样例:

echart实现3d地图_3D飞线效果——让线“飞”起来的秘密相关推荐

  1. 教你用Python绘制3D地图,做出来效果太酷炫啦~

    导语 这期主要介绍3D地图,还是比较神奇的,下面让我们一起来学习吧

  2. Python绘制3D地图,做出来效果太酷炫啦~

    这期主要介绍3D地图, 还是比较神奇的, 下面让我们一起来学习吧

  3. geoCoordMap数据,全国省市,4个直辖市,用于echart gl 3d地图

    var geoCoordMap= {'北京': [116.4551, 40.2539],'东城区':[116.418757,39.917544],'西城区':[116.366794,39.915309 ...

  4. 全国省市,4个直辖市geoCoord数据,用于echart gl 3d地图

    var geoCoordMap = {'北京': [116.4551, 40.2539],'东城区':[116.418757,39.917544],'西城区':[116.366794,39.91530 ...

  5. vue+echarts+3D地图 制作大屏

    基于3d地图做的一些效果,首先看下效果图 ​​​​​​​ 准备工作:下载echarts 和3d地图需要用到的依赖包,版本随意就行 ​​​​​​​ 下载依赖之后,在页面引入,引入网上下载的地图json文 ...

  6. Echart实现中国地图和地图打点

    一.概述 首先ECharts 是一个使用 JavaScript 实现的开源可视化库.兼容当前绝大部分浏览器,而且提供大量可交互.可高度个性化定制的图表,满足开发者各种需求. 今天主要展示echarts ...

  7. Echarts实现3d 地图实现飞线效果

    Echarts实现3d 地图实现飞线效果 注意:重点关注data中的数据格式 在lines3D中symbol不能设置指定样式,echarts官网也没有这个参数,所以对于lines3D飞线如何实现飞机航 ...

  8. canvas绘制飞线效果

    在我们做的可视化大屏项目中,经常会遇到飞线的效果. 在我们的大屏编辑器中,可以通过拖拽+配置参数的方式很快就能够实现.下面是我们使用大屏编辑器实现的一个项目效果: 中间地图就有飞线的效果. 抛开编辑器 ...

  9. RIKIBOT-FX4多线激光雷达用谷歌cartographer构建3D地图

    目录 简介 建图测试遇到的问题 录制数据包 回放数据并构建地图 查看点云地图 关键文件配置 交流方式 简介 上一篇介绍了用多线激光雷达构建用谷歌cartographer算法构建2D地图,这里介绍用多线 ...

最新文章

  1. Android报错——connect failed: EHOSTUNREACH (No route to host)
  2. UIDatePicker | 时间选择器
  3. 如何快速演变XMind文件
  4. php 发送多个,向多个地址发送邮件的php类
  5. php数组如何插入,PHP如何在数组指定位置插入单元
  6. vue element序号翻页连续排序
  7. python导入鸢尾花数据集_决策树分类鸢尾花数据集python实现
  8. Base64 | Base32 | Base16编码和解码小结
  9. Android-高德api使用常见错误
  10. phpspreadsheet文件下载
  11. 【数据库习题原理 10】数据库恢复技术
  12. C语言关于变量定义未使用编译警告warring
  13. 免费体验 阿里云智能LOGO帮你解决设计难题
  14. 微信公众平台开发(六) 翻译功能开发
  15. Ubuntu(18.04)不能上网解决办法
  16. 【Matlab学习】
  17. 利用Java8新特性stream流给集合中的某个属性赋值
  18. JavaWeb Day02(动力节点)
  19. 就自拍这回事(文/@最牛傻蛋)
  20. 过滤html标签 去除html标签

热门文章

  1. 智能可穿戴迎来长续航焕新活力 出门问问TicWatch Pro 3即将国内上市
  2. 名企程序员被裁实录:早上还在改 Bug,晚上就成下岗工
  3. python中的repr是什么意思_python中str和repr有什么区别
  4. 边缘指示函数matlab,matlab图像处理——傅立叶变换边缘提取
  5. python随机森林特征重要性_Python中随机森林回归的特征重要性
  6. python缩进注意事项_python注意事项
  7. Attribute “singleton” must be declared for element type “bean”.
  8. Google 插件总览
  9. 快速开发工作流_02_集成在线流程设计器
  10. 计算机硬件基础-存取方式