百度 Echarts 地图->模拟迁徙,实现自动切换地图

小航哥注释:

1、本文主要是把模拟迁移的流程讲了一遍,讲的很好。具体实现参考航哥这篇随笔“流量分析系统----实现-echarts模拟迁移(bmap.js/china.js)”

2、用了china.js就不需要用百度地图的bmap.js,两者取其一就可以。

3、本文参考自http://blog.csdn.net/cj_zyz/article/details/76574143

4、虽然china.js已经不能在echats官网下载了,但大家可以直接百度下载,网上很多资源。

刚好有个项目,然后前端找了这个百度的echarts地图,领导说好,然后说要让它自动切换地图,就丢给我了。。。不过还好,做出来了。可惜的是,效果是实现了,最后却被更高级的领导pass掉,但决定写下这篇博客,或许能帮到有需要的人。

当时这个项目,是用于大看屏的,那种挂在墙上的大屏幕,长度6米左右样子。

现在,重新在官网上弄个简单的例子,重现下这个效果。

Echarts官网 -> 地图 -> 模拟迁徙  官网示例地址:

http://echarts.baidu.com/demo.html#geo-lines

需要实现的效果:如图1,实现右下角“北京”、“上海”、“广州”的自动切换,定时切换。

图1


我是个肝java的,这个echarts也要部署到服务器才能跑起来,如果有大佬有更好的方法,可以在评论下留言,一起讨论学习。

 

步骤一、去官网下载两个js,下面是下载地址还有图片

①echarts.js : http://echarts.baidu.com/download.html

②(地图)china.js : http://echarts.baidu.com/download-map.html


步骤二、用eclipse创建一个web项目,导入js,创建一个index.html文件


 

步骤三、编辑 index.html 文件,基于官网教程。有些注意点看下面的图片

官网教程地址: http://echarts.baidu.com/tutorial.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <!-- 引入 jquery -->
  6. <script src="js/jquery-1.8.3.min.js"></script>
  7. <!-- 引入 ECharts 文件 -->
  8. <script src="js/echarts.js"></script>
  9. <!-- 引入地图 -->
  10. <script src="js/china.js"></script>
  11. <!-- 航线自动切换,自己写 -->
  12. <script src="js/line_auto_switch.js"></script>
  13. </head>
  14. <body>
  15. <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
  16. <div id="main" style="width: 600px;height:400px;"></div>
  17. <!-- 下面的script脚本,其实也可以写成一个js,然后引入近来,但这里就不这样做了 -->
  18. <script type="text/javascript">
  19. // 基于准备好的dom,初始化echarts实例,
  20. // 这句和最后一句,都是必须的。只是中间部分改变了。根据官网教程来的
  21. var myChart = echarts.init(document.getElementById('main'));
  22. //中间部分,就是最上面第一张图,官网示例的代码复制写到这里
  23. //模拟迁徙 : http://echarts.baidu.com/demo.html#geo-lines
  24. // 使用刚指定的配置项和数据显示图表。
  25. myChart.setOption(option);
  26. </script>
  27. </body>
  28. </html>

selected属性:官网例子没有,就是这东西,才能实现这篇博客所说的效果,因为,不写,它会默认第一个,也就是'北京
Top10'为选中状态。

map:"china" 
是你下载地图js的那个文件名“china.js”,比如你下载的是“world.js”,那么这里的“china”也要改为“world”。

 

步骤四、新建 line_auto_switch.js 文件,实现自动、定时切换效果,但会有个缺点,最后面会说到。

  1. //************************
  2. //******航线自动切换*********
  3. //************************
  4. $(document).ready(function(){
  5. auto_switch_timer();
  6. });
  7. //用来选中的节点,因为默认是 “北京 Top10” 先选中的,默认为select0
  8. //'北京 Top10', '上海 Top10', '广州 Top10'
  9. var select0 = {
  10. '北京 Top10' : true,
  11. '上海 Top10' : false,
  12. '广州 Top10' : false
  13. };
  14. var select1 = {
  15. '北京 Top10' : false,
  16. '上海 Top10' : true,
  17. '广州 Top10' : false
  18. };
  19. var select2 = {
  20. '北京 Top10' : false,
  21. '上海 Top10' : false,
  22. '广州 Top10' : true
  23. };
  24. var restTime = 2;// 2秒切换一次
  25. var switch_index = 1;//激活的select变量,因为0是默认的,所以从1开始
  26. var switch_count = 3;//总共有多少个 select变量
  27. /* 倒计时js */
  28. function auto_switch_timer() {
  29. // debugger;
  30. var intDiff = parseInt(restTime);// 倒计时总秒数量
  31. window.setInterval(function() {
  32. if (intDiff > 0) {
  33. intDiff--;
  34. } else {
  35. intDiff = parseInt(restTime);
  36. // 获取 option 里的 legend 参数
  37. var legend = option.legend;
  38. // 判断是不是激活最后一个selectX变量,是,下次就从 select0 开始
  39. if (switch_index == switch_count) {
  40. switch_index = 0;
  41. }
  42. switch (switch_index) {
  43. case 0:
  44. legend.selected = select0;
  45. break;
  46. case 1:
  47. // selected 是当前选中的
  48. legend.selected = select1;
  49. break;
  50. case 2:
  51. legend.selected = select2;
  52. break;
  53. }
  54. // 设置 option
  55. option.legend = legend;
  56. // 重新加载 option,因为修改了局部,所以不会出现整个页面刷新
  57. myChart.setOption(option);
  58. switch_index++;
  59. }
  60. }, 1000);
  61. }

总结:

1、你可以把自动切换的代码,放到官网例子上哦,写在最下面,你就知道效果了,亲测可用。如下图


2、步骤四所说的缺点,就是你去拖动地图后,等下次切换,又会跳回原来的位置,但是我把代码放到官网例子上,却重现不了。我也不明白怎么回事,反正不能怪我,嘿嘿,我当时只写了这个切换航线的js。

3、这里面还有很多优化的地方,比如,不止“北上广”3个城市的话,有10几个城市,甚至更多,那么,js里面,“var
selectXX;”这代码要写很多,然后,switch里面的case,也要相应的增加,所以如何优化,自己想,我只是个肝后台的,前端展示效果什么的,才不要呢?

坑留给你们。。。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

流量分析系统----讲解-echarts模拟迁移(结合china.js)的更多相关文章

  1. 流量分析系统----实现-echarts模拟迁移(bmap.js/china.js)

    china.js: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  2. 开源流量分析系统 Apache Spot 概述(转)

    原文地址http://blog.nsfocus.net/apache-spot/ Apache Spot 是一个基于网络流量和数据包分析,通过独特的机器学习方法,发现潜在安全威胁和未知网络攻击能力的开 ...

  3. Echarts 中国地图(包括china.js文件)

    用Echarts写中国地图需要导入china.js(现在官方不提供下载,个人找的在最下面有),根据需要的效果如下.位置可以自己在option里面修改 <!DOCTYPE html> < ...

  4. 流量分析系统---echarts模拟迁移中 ,geocoord从后台获取动态数值

    由于在echarts的使用手册中说了 {Object} geoCoord (geoCoord是Object类型) ,所以不能用传统的字符串拼接或数组的方式赋值.在后台的controller中用Map& ...

  5. 流量分析系统---redis

    1\启动redis 方法一: 修改了某些配置,具体步骤惨开下面的内容 [root@mini1 ~]# service redis stop/start 方法二: [root@mini1 bin]#cd ...

  6. 流量分析系统---flume(测试flume+kafka)

    1.在flume官方网站下载最新的flume     wget http://124.205.69.169/files/A1540000011ED5DB/mirror.bit.edu.cn/apach ...

  7. 流量分析系统---kafka集群部署

    1.集群部署的基本流程 Storm上游数据源之Kakfa 下载安装包.解压安装包.修改配置文件.分发安装包.启动集群 2.基础环境准备 安装前的准备工作(zk集群已经部署完毕)  关闭防火墙 chk ...

  8. 流量分析系统--zookeeper集群部署

    安装zookeeper mkdir apps tar -zxvf zookeeper-3.4.5.tar.gz -C apps [root@mini1 zookeeper-3.4.5]# rm -rf ...

  9. 网络流量分析——NPMD关注IT运维、识别宕机和运行不佳进行性能优化。智能化分析是关键-主动发现业务运行异常。科来做APT相关的安全分析

    科来 做流量分析,同时也做了一些安全分析(偏APT)——参考其官网:http://www.colasoft.com.cn/cases-and-application/network-security- ...

随机推荐

  1. 李洪强iOS开发之OC[005] - OC和C的差异学习二

  2. 参数化--每个vuser使用不同的参数值

    使用controller并发时,每个vuser从参数文件中取一个值,设置如下图:

  3. java中static变量的声明和初始化

     目录(?)[+] 问题1静态变量如何初始化 问题2JDK如何处理static块 问题3如何看待静态变量的声明 对初始问题的解答 在网上看到了下面的一段代码: public class Test  ...

  4. iOS swift cookie创建存储移除

    保存网络请求的cookies,并存储到UserDefaults中 //保存COOKIES static func saveCookies(for urlStr: String){ if let url ...

  5. [浪风推荐]php的memcache应用入门教程

    所需环境: php 5.3.3 apache 2.2.7 mysql 5.5.8 解压Memcached_1.2.5文档,cmd下执行memcached.exe -d -install 将php5.3 ...

  6. JNDI提供了一种统一的方式,可以用在网络上查找和访问服务

    JNDI提供了一种统一的方式,可以用在网络上查找和访问服务.通过指定一个资源名称,该名称对应于数据库或命名服务中的一个记录,同时返回数据库连接建立所必须的信息. JNDI主要有两部分组成:应用程序编程 ...

  7. Memcached 常见的问题

    memcached是怎么工作的? Memcached的奇妙来自两阶段哈希(two-stage hash).Memcached就像一个巨大的.存储了非常多<key,value>对的哈希表. ...

  8. Android桌面小组件的使用

    一:建立一个类继承AppWidgetProvider 二:建立AWP的布局文件: 布局自己定义一个,但是在使用控件上是有要求的: 以上是Widget目前支持的控件. 三:编写AWP的信息文件:需要在r ...

  9. Windows API之DuplicateHandle

    在进程之间共享内核对象句柄的一种方法:DuplicateHandle 简单地说,该函数取得某个进程句柄表中的一个表项,然后把它拷贝到另一个进程的句柄表中. BOOL WINAPI DuplicateH ...

  10. The E-pang Palace(暴力几何)

    //暴力的几何题,问,n个点可以组成的矩形,不相交,可包含的情况下,最大的面积,还有就是边一定与 x y 轴平行,所以比较简单了 //暴力遍历对角线,搜出所有可能的矩形,然后二重循环所有矩形,判断一下 ...