Echarts山东省地图两级钻取、返回及济南合并莱芜地图
Echarts3.0+jQuery3.3.1
山东省地图中济南市需要注意下,莱芜市已经和济南市合并,地图数据来源于地图选择器,获取山东省地图信息及各地市地图信息(JSON格式)
//山东地图(第一级地图)的英文、中文、Json数据
var shandongId = 'shandong';//找到json串
var shandongName = '山东';//加载地图
var shandongJson = null; //记录父级ID、Name
var mapStack = [];
var parentId = null;
var parentName = null; var cityProper = {
'济南市': 'jinan',
'青岛市': 'qingdao',
'威海市': 'weihai',
'烟台市': 'yantai',
'潍坊市': 'weifang',
'淄博市': 'zibo',
'日照市': 'rizhao',
'临沂市': 'linyi',
'济宁市': 'jining',
'枣庄市': 'zaozhuang',
'菏泽市': 'heze',
'聊城市': 'liaocheng',
'泰安市': 'taian',
'德州市': 'dezhou',
'滨州市': 'binzhou',
'东营市': 'dongying'
}; showChart('mapChart'); /**
* Echarts地图
*/
//Echarts地图全局变量,主要是在返回上级地图的方法中会用到
var myChart = null;
function showChart(divid) {
$.get('/js/cockpit/json/shandong/' + shandongId + '.json', function (mapJson) {
shandongJson = mapJson;
myChart = echarts.init(document.getElementById(divid));
registerAndsetOption(myChart, shandongId, shandongName, mapJson, false);
parentId = shandongId;
parentName = '山东';
myChart.on('click', function (param) {
var cityId = cityProper[param.name];
if (cityId != 'shandong' && mapStack.length == 0) {//代表有下级地图
$.get('/js/cockpit/json/shandong/' + cityId + '.json', function (mapJson) {
registerAndsetOption(myChart, cityId, param.name, mapJson, true);
})
} else {
//没有下级地图,回到山东地图,并将mapStack清空
registerAndsetOption(myChart, shandongId, shandongName, shandongJson, false);
mapStack = [];
parentId = shandongId;
parentName = shandongName;
}
});
})
} /**
* 公共方法
* @param {*} myChart
* @param {*} id 市英文名称
* @param {*} name 市汉语名称
* @param {*} mapJson 地图Json数据
* @param {*} flag 是否往mapStack里添加parentId,parentName
*/
function registerAndsetOption(myChart, id, name, mapJson, flag) { echarts.registerMap(name, mapJson);
option = {
title: {
text: name + 'xx数据分析',
subtext: '数据来自xx'
},
tooltip: {
trigger: 'item',
formatter: function (params) {
var obj = JSON.parse(JSON.stringify(params));
var str = "<ul style='text-align:left'><li style='color: #da70d6;font:bold;'>" + obj.name + "</li>";
str = str + "<li> xx总数 :" + obj.data.value + "</li>";
str = str + "<li> xx总数 :" + (obj.data.scnum + obj.data.ltnum) + "</li>";
str = str + "<li> xx总数 :" + obj.data.scnum + "</li>";
str = str + "<li> xx总数 :" + obj.data.ltnum + "</li>";
str = str + "</ul>";
return str;
}
},
toolbox: {
show: true,
orient: 'vertical',
left: 'right',
top: 'top',
feature: {
dataView: {
readOnly: false
},
restore: {},
saveAsImage: {}
}
},
visualMap: {
min: 0,
max: 60000,
text: ['高', '低'],
left: 'right',
top: 'bottom',
realtime: false,
calculable: true,
inRange: {
color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']
}
},
geo: {
show: true,
map: name,
label: {
normal: {
show: false
},
emphasis: {
show: false,
}
},
roam: false, //鼠标平移或者缩放
itemStyle: { //每个点的样式
normal: {
areaColor: 'transparent',
borderColor: '#3fdaff',
borderWidth: 2,
shadowColor: 'rgba(63, 218, 255, 0.5)',
shadowBlur: 30
},
emphasis: {
areaColor: '#2B91B7',
}
}
},
series: [{
name: name+'xx数据分析',
type: 'map',
coordinateSystem: 'geo',
mapType: name,
mapLocation: {
x: 'center'
},
itemStyle: {
normal: {
label: {
show: true
}
},
emphasis: {
label: {
show: true
}
}
},
data:(function () {
var datas = [];
var params = {
"name":name
};
$.ajax({
type:"POST",
url:"/xx/xx",
dataType:"json",
data:params,
async:false,
success:function (result) {
for (var i = 0; i < result.length; i++){
datas.push({
"value":result[i].totalnum, "name":result[i].city,
"scnum":result[i].scnum, "ltnum":result[i].ltnum
})
}
}
})
return datas;
})(),
}]
};
myChart.setOption(option); if (flag) {//往mapStack里添加parentId,parentName,返回上一级使用
mapStack.push({
mapId: parentId,
mapName: parentName
});
parentId = id;
parentName = name;
}
}
效果图如下


参考:https://dongkelun.com/2018/11/27/echartsChinaMap/
Echarts山东省地图两级钻取、返回及济南合并莱芜地图的更多相关文章
- ECharts 地图绘制与钻取简易接口
1.地图绘制过程原理 给定范围边界经纬度数据,再给它个名字就构成了绘制地图的基础.也就是说,你可以绘制任意形状的地图版块. 2.地图数据生成 中国以及省市县等地图的基础数据可以从这里生成与下载. ht ...
- J2CACHE 两级缓存框架
概述 缓存框架我们有ehcache 和 redis 分别是 本地内存缓存和 分布式缓存框架.在实际情况下如果单台机器 使用ehcache 就可以满足需求了,速度快效率高,有些数据如果需要多台机器共享这 ...
- 实现外卖选餐时两级 tableView 联动效果
最近实现了下饿了么中选餐时两级tableView联动效果,先上效果图,大家感受一下: 下面说下具体实现步骤: 首先分解一下,实现这个需求主要是两点,一是点击左边tableView,同时滚动右边tabl ...
- Spring+ehcache+redis两级缓存
问题描述 场景:我们的应用系统是分布式集群的,可横向扩展的.应用中某个接口操作满足以下一个或多个条件: 1. 接口运行复杂代价大, 2. 接口返回数据量大, 3. 接口的数据基本不会更改, 4. 接口 ...
- Combobox下拉框两级联动
下拉框的两级联动是我们开发中经常遇到一种情况.比如一个学生管理系统中,根据年级.科目及姓名查询学生考试成绩,年级和科目都是硬盘中的有限数据(数据库)而学生则可以有用户手动指定,这时在数据库中有年级和科 ...
- 用guava快速打造两级缓存能力
首先,咱们都有一共识,即可以使用缓存来提升系统的访问速度! 现如今,分布式缓存这么强大,所以,大部分时候,我们可能都不会去关注本地缓存了! 而在一起高并发的场景,如果我们一味使用nosql式的缓存,如 ...
- Redis+Caffeine两级缓存,让访问速度纵享丝滑
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 在高性能的服务架构设计中,缓存是一个不可或缺的环节.在实际的项目中,我们通常会将一些热点数据存储到Redis或MemCache这类缓存中间件中, ...
- 基于Spring接口,集成Caffeine+Redis两级缓存
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 在上一篇文章Redis+Caffeine两级缓存,让访问速度纵享丝滑中,我们介绍了3种整合Caffeine和Redis作为两级缓存使用的方法,虽 ...
- ipv4理论知识3-分类编址之两级编址
两级编制 分类编址时,同一网络中的所有地址都属于统一个地址块,而每个地址块包含两部分:网络标识和主机标识.网络标识指明了网络,主机标识则指明了连接到该网络的一台特定的主机.如下图描绘了分类编址中一个I ...
随机推荐
- openstack vnc 报1006的错误
1.问题现象 创建完虚拟机以后,通过nova get-vnc-console命令,获取虚机的vnc连接地址,在浏览器中打开该连接,报1006错误 2.vnc的原理图 3.定位分析 1)分别在控制节点和 ...
- Dubbo源码学习之-通过源码看看dubbo对netty的使用
前言 前段时间,从头开始将netty源码了解了个大概,但都是原理上理解.刚好博主对dubbo框架了解过一些,这次就以dubbo框架为例,详细看看dubbo这种出色的开源框架是如何使用netty的,又是 ...
- springboot-ssm的pom.xml
springboot-ssm的pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu ...
- Autoit 使用
一.Autoit 上传文件. 1.常用语法 - WinActivate("title") 聚焦到指定活动窗口 - ControlFocus ( "titl ...
- Mysql启动后停止的解决方法
安装mysql后,服务无法正常启动,报错如下: 解法方法: 1 以管理员身份运行命令提示符 2 用命令进行mysql安装目录的bin目录: cd C:\Prog ...
- openCV - 5~7 图像混合、调整图像亮度与对比度、绘制形状与文字
5. 图像混合 理论-线性混合操作.相关API(addWeighted) 理论-线性混合操作 用到的公式 (其中 α 的取值范围为0~1之间) 相关API(addWeighted) 参数1:输入图像M ...
- 力扣Leetcode 面试题51. 数组中的逆序对 - 归并排序
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1: 输入: [7,5,6,4] 输出: 5 限制: 0 <= ...
- PAT-B1009 说反话 - 字符串反转
1009 说反话 (20分) 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由若干单词和若干空格组 ...
- python笔记-标准库unittest
unittest核心工作原理 unittest中最核心的四个概念是:test case, test suite, test runner, test fixture. 一个TestCase的实例就是一 ...
- SpringCloud实战 | 第五篇:SpringCloud整合OpenFeign实现微服务之间的调用
一. 前言 微服务实战系列是基于开源微服务项目 有来商城youlai-mall 版本升级为背景来开展的,本篇则是讲述SpringCloud整合OpenFeign实现微服务之间的相互调用,有兴趣的朋友可 ...