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山东省地图两级钻取、返回及济南合并莱芜地图的更多相关文章

  1. ECharts 地图绘制与钻取简易接口

    1.地图绘制过程原理 给定范围边界经纬度数据,再给它个名字就构成了绘制地图的基础.也就是说,你可以绘制任意形状的地图版块. 2.地图数据生成 中国以及省市县等地图的基础数据可以从这里生成与下载. ht ...

  2. J2CACHE 两级缓存框架

    概述 缓存框架我们有ehcache 和 redis 分别是 本地内存缓存和 分布式缓存框架.在实际情况下如果单台机器 使用ehcache 就可以满足需求了,速度快效率高,有些数据如果需要多台机器共享这 ...

  3. 实现外卖选餐时两级 tableView 联动效果

    最近实现了下饿了么中选餐时两级tableView联动效果,先上效果图,大家感受一下: 下面说下具体实现步骤: 首先分解一下,实现这个需求主要是两点,一是点击左边tableView,同时滚动右边tabl ...

  4. Spring+ehcache+redis两级缓存

    问题描述 场景:我们的应用系统是分布式集群的,可横向扩展的.应用中某个接口操作满足以下一个或多个条件: 1. 接口运行复杂代价大, 2. 接口返回数据量大, 3. 接口的数据基本不会更改, 4. 接口 ...

  5. Combobox下拉框两级联动

    下拉框的两级联动是我们开发中经常遇到一种情况.比如一个学生管理系统中,根据年级.科目及姓名查询学生考试成绩,年级和科目都是硬盘中的有限数据(数据库)而学生则可以有用户手动指定,这时在数据库中有年级和科 ...

  6. 用guava快速打造两级缓存能力

    首先,咱们都有一共识,即可以使用缓存来提升系统的访问速度! 现如今,分布式缓存这么强大,所以,大部分时候,我们可能都不会去关注本地缓存了! 而在一起高并发的场景,如果我们一味使用nosql式的缓存,如 ...

  7. Redis+Caffeine两级缓存,让访问速度纵享丝滑

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 在高性能的服务架构设计中,缓存是一个不可或缺的环节.在实际的项目中,我们通常会将一些热点数据存储到Redis或MemCache这类缓存中间件中, ...

  8. 基于Spring接口,集成Caffeine+Redis两级缓存

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 在上一篇文章Redis+Caffeine两级缓存,让访问速度纵享丝滑中,我们介绍了3种整合Caffeine和Redis作为两级缓存使用的方法,虽 ...

  9. ipv4理论知识3-分类编址之两级编址

    两级编制 分类编址时,同一网络中的所有地址都属于统一个地址块,而每个地址块包含两部分:网络标识和主机标识.网络标识指明了网络,主机标识则指明了连接到该网络的一台特定的主机.如下图描绘了分类编址中一个I ...

随机推荐

  1. source insight4工具栏还原

    source insight4工具栏不小心动了一下,位置全变了,强迫症犯了. 还原步骤. 1.关闭SI4 2.备份 C:\Users\用户名\Documents\Source Insight 4.0\ ...

  2. Blazor带我重玩前端(六)

    本文主要讨论Blazor事件内容,由于blazor事件部分很多,所以会分成上下两篇,本文为第二篇. 双向绑定 概述 如图所示 当点击单项绑定的时候,MyOnewayComponent里的属性值会发生变 ...

  3. C++轻量级跨平台文件系统API

    http://en.cppreference.com/w/cpp/experimental/fs https://www.starmessagesoftware.com/cpcclibrary htt ...

  4. 理解WEB系统

    网络应用及分类 BS架构:Browser/Server web应用的客户端不需要安装以及升级维护 跨平台 较方便CS架构:Client/Server 客户端应用则需要每个客户端安装和升级 一种系统对应 ...

  5. 太刺激了,面试官让我手写跳表,而我用两种实现方式吊打了TA!

    前言 本文收录于专辑:http://dwz.win/HjK,点击解锁更多数据结构与算法的知识. 你好,我是彤哥. 上一节,我们一起学习了关于跳表的理论知识,相信通过上一节的学习,你一定可以给面试官完完 ...

  6. 10 router

    https://router.vuejs.org/zh/guide/advanced/navigation-guards.html 1.路由守卫beforeEach router.beforeEach ...

  7. 持续部署入门:基于 Kubernetes 实现蓝绿发布

    前言 软件世界比以往任何时候都更快.为了保持竞争力,需要尽快推出新的软件版本,而不会中断活跃用户访问,影响用户体验.越来越多企业已将其应用迁移到 Kubernetes. 在 Kubernetes 中有 ...

  8. 支持MySQL数据库的agumaster版本

    下载地址:https://files.cnblogs.com/files/xiandedanteng/agumaster20200501.zip

  9. leetcode刷题-52N皇后2

    题目 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击.给定一个整数 n,返回 n 皇后不同的解决方案的数量. 思路 与51题完全一致 实现 class ...

  10. Typora第一次使用

    一级标题 二级标题 三级标题 三个# + 空格 分割线 三个- 三个* 粗体 ctrl + B 斜体 ctrl + I 删除线 引用 一个大于号就可以了 图片: ! + [] + (图片路径) 超链接 ...