假如从数据库读出以下数据,如何将数据展示在地图之上

1.部门的名称数据:

 List deptname=[联通事业部-上海联通项目组, 联通事业部-河南联通项目组, 联通事业部-贵州联通项目组, 联通事业部-黑龙江联通项目组, 联通事业部-总部项目中心, 联通事业部-河北联通项目组, 联通事业部-北京联通项目组, 联通事业部-西藏联通项目组, 联通事业部-湖北联通项目组, 联通事业部-江苏联通项目组, 联通事业部-宝马业务拓展部, 联通事业部-浙江联通项目组, 联通事业部-重庆联通项目组, 联通事业部-内蒙联通项目组, 联通事业部-四川联通项目组, 联通事业部-海南联通项目组, 联通事业部-研究院项目部, 联通事业部-宁夏联通项目组, 联通事业部-云南联通项目组, 联通事业部-吉林联通项目组, 联通事业部-甘肃联通项目组]

2.对应的销售额数据:

List cash:=[5953755, 3822674.83, 2561747.31, 2144649.95, 1674165.5, 1477500, 1456919.64, 1199760, 1126992, 1043040, 1007000, 959140, 950000, 915840, 584532.4, 350000, 282000, 263990.88, 251500, 240786, 128260]

问题:

如何将一一对应的数据展示在地图上?

deptname的数据一一对应cash的数据

3.java代码处理对应关系

3.1定义常量省份

private static final String[] province = { "江苏", "青海", "四川", "海南", "陕西", "甘肃", "云南", "湖南", "湖北", "黑龙江", "贵州", "山东",
"江西", "河南", "河北", "山西", "安徽", "福建", "浙江", "广东", "吉林", "辽宁", "台湾", "新疆", "广西", "宁夏", "内蒙古", "西藏", "北京", "天津",
"上海", "重庆", "香港", "澳门","南海诸岛"};

4.通过以下代码实现转换,并存入2个List中,方便echarts调用

 private void switchParams(List<String> deptname, List cash) throws IOException {
// 正则表达式
List provic = new ArrayList();
List toCash = new ArrayList();
for (int i = 0; i < province.length; i++) {
String regex = province[i];
Boolean flag = false;
for (int j = 0; j < deptname.size() && j < cash.size(); j++) {
String str = deptname.get(j);
if (str.contains(regex)) {
provic.add(regex);
toCash.add(cash.get(j));
flag = true;
}
if (flag) {
break;
} else {
}
}
if(!flag){
provic.add(regex);
toCash.add(0);
}
}
setParams(provic,toCash);
} private void setParams(List provic, List toCash) throws IOException {
Map params = new HashMap();
params.put("provic", provic);
params.put("toCash", toCash);
doEchart(params);
}
private void doEchart(Map map) throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/json; charset=utf-8");
JSONObject json = new JSONObject();
json.putAll(map);
response.getWriter().println(json.toString());
}

5.在前端通过ajax来获取数据,进行数据的展示,代码如下:

 /**
* 该插件为显示地图的插件,动态加载
*/
function setMapUnion(deptId) {
/**
* ajax获取联通事业部的所有项目组的销售额
*/
var o1 = $("#acctmonth").val();
var o2 = $("#maxMonth").val();
var parData = {
acctmonth : o1,
maxMonth : o2,
deptId : deptId
};
var par = JSON.stringify(parData);
/**
* @author Administrator
* @params:参数设置:为地图各省份提供数据.
*/
var provic;
var toCash;
$.ajax({
url : "CompanyFeeBusinessNew!setMapUnion.action",
data : {
par : par
},
cache : true,
async : false,
type : "post",
success : function(result) {
provic = result.provic;
toCash = result.toCash;
}
});
// ----------参数的转换
var text = null;
if (deptId == '5271') {
text = '联通事业部分分省份项目组销售额';
} else if (deptId == '7658') {
text = '电信事业部分分省份项目组销售额';
} else {
text = '移动事业部分分省份项目组销售额';
}
$("#map").css('width', $("#map").width());
require.config({
paths : {
echarts : '/pure/resources/echarts'
}
});
require([ 'echarts', 'echarts/chart/map' ], function DrawEchart(ec) {
var myChart = ec.init(document.getElementById("map"));
mapParams = {
title : {
text : text,
// subtext: '纯属虚构',
left : 'center'
},
tooltip : {
trigger : 'item'
},
legend : {
orient : 'vertical',
left : 'left',
data : [ '销售额' ]
},
toolbox : {
show : true,
orient : 'vertical',
left : 'right',
top : 'center',
feature : {
dataView : {
readOnly : false
},
restore : {},
saveAsImage : {}
}
},
visualMap : {
min : 0,
max : 5000000,
text : [ 'High', 'Low' ],
realtime : false,
calculable : true,
inRange : {
color : [ 'lightskyblue', 'yellow', 'orangered' ]
}
},
dataRange : {
min : 0,
max : 2500000,
x : 'left',
selectedMode : false,
y : 'bottom',
text : [ 'High', 'Low' ], // 文本,默认为数值文本
calculable : true,
color : [ '#EE6363', '#CCCCCC' ]
},
series : [ {
name : '销售额',
type : 'map',
mapType : 'china',
roam : false,
label : {
normal : {
show : true
},
emphasis : {
show : true
}
},
data : (function() {
var res = [];
var len = provic.length;
while (len--) {
res.push({
name : provic[len],
value : toCash[len]
});
}
return res;
})(),
itemStyle : {
normal : {
color : '#BF3EFF',
borderWidth : 0.5,
borderColor : 'black',
/* color: 'orange', */
label : {
show : false
}
}
}
} ]
};
myChart.setOption(mapParams);
});
}

6.最后,展示效果:(可以根据deptId来动态切换显示图例):

图1:联通事业部
  

图2:电信事业部:

图3:移动事业部
 

eCharts动态加载各省份的数据的更多相关文章

  1. Echarts动态加载后台数据

    注意:1.用Ajax请求获取后台数据 2.Echarts只能处理Json数据 后台Controller:根据业务需求不同而返回不同数据,我前台要循环遍历Echarts的series进行数据添加,所以后 ...

  2. 动态加载DataGrid表头及数据

    初始化表头 js生成前端 /*初始化表头*/ function initDataGridTitle(id) { $.ajax({ url: '/${appName}/report/***/***', ...

  3. Echarts动态加载饼状图实例(二)

    一.引入echarts.js文件(下载页:http://echarts.baidu.com/download.html) 二.HTML代码: <div class="ui-contai ...

  4. Cortex-M3 动态加载二(RWPI数据无关实现)

    上一篇关于动态加载讲述的是M3下面的ropi的实现细节,这一篇则讲述RW段的实现细节以及系统加载RW段的思路,我在M3上根据这个思路可以实现elf的动态加载,当然进一步的可以优化很多东西,还可以研究将 ...

  5. Echarts动态加载柱状图和折线图混合展示的实例

    一.引入echarts文件: <script type="text/javascript" src="echarts.js"></script ...

  6. ECharts动态加载堆叠柱状图的实例

    一.引入echarts.js文件(下载页:http://echarts.baidu.com/download.html) 二.HTML代码: <div style="width: 10 ...

  7. Echarts动态加载饼状图的实例

    一.引入echarts.js文件(下载页:http://echarts.baidu.com/download.html) 二.HTML代码: <div style="width: 10 ...

  8. Echarts动态加载柱状图的实例

    一.引入echarts.js文件(下载页:http://echarts.baidu.com/download.html) 二.HTML代码: <div style="width: 10 ...

  9. html中的数据岛:利用DSO和javascript在html中动态加载和浏览xml数据

    1.DSO也叫做数据源对象,IE 4.0引入了DSO,在IE 5.0对DSO技术进行很大的扩展.以往如果数据是通过SQL语言对数据库进行查询得到的结果,那么就把它们存放在ADO(ActiveX Dat ...

随机推荐

  1. java-并发-不可变对象

    浏览以下内容前,请点击并阅读 声明 当一个对象创建后的状态不可改变时就认为其为不可变对象,尽可能地利用不可变对象被公认为是构建简单可靠代码的有效方法.不可变对象在并发程序中比较有用,由于其状态无法改变 ...

  2. bash快捷键

    https://linuxtoy.org/archives/bash-shortcuts.html 编辑命令 Ctrl + a :移到命令行首 Ctrl + e :移到命令行尾 Ctrl + f :按 ...

  3. tomcat发布脚本

    #!/bin/bash #发布相关目录Tomcat_log='/home/CodePub/tomcatlog'dev_package='/home/CodePub/package'old_packag ...

  4. block 从B界面向A界面传值

    最近在改公司外包项目的代码,发现了一种block传值的用法很有意思,记录一下 A.B两个页面 在B界面.h中定义 @property (nonatomic,strong) void(^block)(N ...

  5. 关于telnet源码

    Linux 下流行的 telnet 实现有两个:GNU 的 inetutils 中的实现哈佛的 netkit-telnet 1. http://ftp.gnu.org/gnu/inetutils/2. ...

  6. 简单说说.Net中的弱引用

    弱引用是什么? 要搞清楚什么是弱引用,我们需要先知道强引用是什么.强引用并不是什么深奥的概念,其实我们平时所使用的.Net引用就是强引用.例如: Cat kitty = new Cat(); 变量ki ...

  7. IDEA插件

    Key Promoter 快捷键提示插件,帮助你快速记住快捷键.当你用鼠标完成某功能时,它会指示有相应的快捷键来完成刚才的功能,同时指导你为经常重复的操作建立快捷键. SerialVersionUID ...

  8. Centos 7 安装 设置 IP地址,DNS,主机名,防火墙,端口,SELinux (实测+笔记)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.虚拟系统安装 1.1 使 ...

  9. Smart3D系列教程2之 《为什么三维重建效果这么差?——探探那些被忽略的拍照要求和技巧》

    一.照片采集的实用概念 根据照片进行三维重建的过程中,有人没怎么遇到坑,有人被坑的不轻.可能是模型的纹理失真,模型的法线错了,模型会生成我们各种也想不到的结果,那么,是什么导致三维重建效果这么差的?是 ...

  10. CentOS 安装 gcc-c++

    由于网络环境的问题,很难在线安装,可以 直接挂载安装盘文件,然后在Pacakage 中进行本地安装