
第一步
设置点击事件,使用Ajax请求服务器
//入口
$(function(){
//点击事件
$("#province").click(function(){
var provinceData=[];
$.ajax({
url:"<%=request.getContextPath()%>/WorkProvinceServlet",
type:"get",
dataType:"json",
success:function(data){
//遍历List,将数据转换为一个对象数组
$(data).each(function(i,v){
var temp={name:v.name,value:v.size};//省份,统计数量
provinceData.push(temp);
});
//将处理过后的JSON传入getEchartsMap()方法中,设置地图数据
getEchartsMap(provinceData);
}
});
});
});
第二步
Servlet获取数据库中的数据
Servlet方法
@WebServlet("/WorkProvinceServlet")
public class WorkProvinceServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
System.out.println("WorkProvinceServlet");
response.setContentType("text/plain");
WorkProvinceService service=WorkProvinceService.getInstance();
//统计学生在全国各省工作的信息
List<ProvinceTest> l=service.getProvinces();
//将List转为JSON
response.getWriter().print(JSON.toJSON(l));
}
}
Service方法
public class WorkProvinceService {
private static WorkProvinceService service=null;
private WorkProvinceService() {
}
public static WorkProvinceService getInstance() {
if(service==null) {
service=new WorkProvinceService();
}
return service;
}
public List<ProvinceTest> getProvinces() {
return CommonDao.getInstance().selectProvincesByGrounp();
}
}
Dao方法
public List<ProvinceTest> selectProvincesByGrounp() {
List<ProvinceTest> L=new ArrayList<ProvinceTest>();
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
// 获取连接
con = DBUtils2.getConnection();
// 定义SQL语句
String sql = "select p.provinceid,p.province,count(*) count from RegistrationCardInfo r,province p\r\n" +
" where r.province=p.provinceid\r\n" +
" group by p.provinceid,p.province";
// 获取PreparedStatement对象
stmt = con.prepareStatement(sql);
rs = stmt.executeQuery();
while (rs.next()) {
ProvinceTest p = new ProvinceTest();
p.setName(rs.getString("province"));
p.setSize(rs.getInt("count"));
L.add(p);
}
} catch (Exception e) {
e.printStackTrace();
}
return L;
}
ProvineTest类
public class ProvinceTest {
private String name;//省份名
private Integer size;//数量
public ProvinceTest() {
super();
// TODO Auto-generated constructor stub
}
public ProvinceTest(String name, Integer size) {
super();
this.name = name;
this.size = size;
}
}
第三步
处理返回的数据
function getEchartsMap(provinceData) { //工作省份地图
var myChart = echarts.init(document.getElementById('map'));
var app = {};
option = null;
var data = [
{ name: '北京', value: 1000 },
{ name: '郑州', value: 38 },
{ name: '石家庄', value: 43 },
{ name: '重庆', value: 54 },
{ name: '西安', value: 54 },
{ name: '上海', value: 54 }
];
var geoCoordMap = {
'北京': [116.46, 39.92],
'郑州': [113.65, 34.76],
'石家庄': [114.48, 38.03],
'重庆': [106.54, 29.59],
'西安': [108.95, 34.27],
'上海': [121.48, 31.22]
};
function convertData(data) {
var res = [];
for(var i = 0; i < data.length; i++) {
var geoCoord = geoCoordMap[data[i].name];
if(geoCoord) {
res.push({
name: data[i].name,
value: geoCoord.concat(data[i].value)
});
}
}
return res;
};
//测试数据
//alert(provinceData);
option = {
tooltip: {},
visualMap: {
show: false,
inRange: {
color: '#fff'
}
},
geo: {
map: 'china',
roam: true,
label: {
normal: {
show: true,
textStyle: {
color: '#929292',
fontSize: 8
}
}
},
itemStyle: {
normal: {
borderColor: 'rgba(0, 0, 0, 0.2)'
},
emphasis: {
areaColor: null,
shadowOffsetX: 0,
shadowOffsetY: 0,
shadowBlur: 20,
borderWidth: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
},
series: [
{
type: 'scatter',
coordinateSystem: 'geo',
data: convertData(data),
symbolSize: 15,
symbol: 'image://images/pin_2.svg',
symbolRotate: 0,
itemStyle: {
normal: {
color: 'red'
}
}
},
{
name: '就业地区',
type: 'map',
geoIndex: 0,
data: provinceData//处理传入的数据!!!
}
]
/*
* 之前的静态数据
{ name: '北京', value: 1000 },
{ name: '天津', value: 58 },
{ name: '上海', value: 78 },
{ name: '重庆', value: 53 },
{ name: '河北', value: 27 },
{ name: '河南', value: 58 },
{ name: '云南', value: 58 },
{ name: '辽宁', value: 58 },
{ name: '黑龙江', value: 58 },
{ name: '湖南', value: 58 },
{ name: '安徽', value: 58 },
{ name: '山东', value: 58 },
{ name: '新疆', value: 58 },
{ name: '江苏', value: 58 },
{ name: '浙江', value: 58 },
{ name: '江西', value: 58 },
{ name: '湖北', value: 58 },
{ name: '广西', value: 58 },
{ name: '甘肃', value: 58 },
{ name: '山西', value: 58 },
{ name: '内蒙古', value: 58 },
{ name: '陕西', value: 58 },
{ name: '吉林', value: 58 },
{ name: '福建', value: 58 },
{ name: '贵州', value: 58 },
{ name: '广东', value: 58 },
{ name: '青海', value: 58 },
{ name: '西藏', value: 58 },
{ name: '四川', value: 58 },
{ name: '宁夏', value: 58 },
{ name: '海南', value: 58 },
{ name: '台湾', value: 58 },
{ name: '香港', value: 58 },
{ name: '澳门', value: 1231231 }
*/
};
if(option && typeof option === "object") {
myChart.setOption(option, true);
}
}