前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:https://www.captainai.net/dongkelun

前言

最近其实一直在用Echarts写前端,之前也想过总结一下Echarts的用法,但是官网的例子已经很全了。写这篇博客是因为Echarts官网把很多地图的例子都去掉了,且不能下载地图Json的数据,而相关的博客又很少,搜到两个,但是不很符合自己的想法,所以就想自己实现总结一下最基本的地图钻取,代码上传到GitHub,这样便于后面再有相关需求的时候,直接从GitHub上下载下来,在这个基础上修改添加功能就好了。

1、演示地址

暂时在没有下级地图的时候会直接返回到第一级中国地图,后面可能改为:提示没有下级地图,然后增加一个回到一级地图的按钮

http://dongkelun.com/echarts-map

2、动图演示

一张一张的截图,图片太多了,就先学了一下录制gif

3、代码

其中地图的json数据是同事之前下载的(可能不全,几个没用的Json没有去掉),在别人的GitHub上也可以找到

代码已上传到GitHub:https://github.com/dongkelun/echarts-map

4、部署

本项目为静态网页,但由于需要获取.json文件的数据,所以不能直接打开index.html(会报js的错误,可以自己试试)

将本项目复制到服务器下,如tomcat的webapps目录下,启动tomcat,然后在浏览器里输入http://localhost:8080/echarts-map即可

因为自己在学Vue,后面可能会用Vue重新实现一下,并添加一些相对复杂的功能,比如添加数据,使每个省的颜色不一样,更多样化一些。
之所以没有先用Vue实现,也没有实现比较复杂的效果,是因为考虑到不是每个人都会Vue,所以用最简单的静态html+css+js实现,这样能使每个人都能看懂,而且可以最基础的地图钻取的模版。后面如果用Vue实现的话,会新建一个项目并上传到GitHub,并及时更新本博客。

更新(2019.02.19)

Vue项目地址:https://github.com/dongkelun/vue-echarts-map

附录

附上核心代码:

index.html

<!DOCTYPE html>
<html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>Echarts 地图钻取</title><link rel="shortcut icon" href=./favicon.ico><link rel="stylesheet" href="./css/index.css" type="text/css"><script type="text/javascript" src="./js/echarts.min.js"></script><script src="https://code.jquery.com/jquery-3.0.0.min.js"></script><script type="text/javascript" src="./js/index.js"></script><script type="text/javascript" src="./js/china-main-city-map.js"></script><script type="text/javascript" src="./js/rem.js"></script></head><body><div class='title'>Echarts中国地图三级钻取</div><div class="box"><button class= "backBtn" onclick="back()">返回上级</button><div id="mapChart" class="chart"></div></div></body></html>

index.css

body{background-image: url('../asset/images/beijingtupian.png');
}.title{width: 100%;height: 10vh;text-align: center;color:#fff;font-size: 2em;line-height: 10vh;
}
.box {position: absolute;width: 90%;height: 80vh;left:5%;top:10%;background-color:rgba(24,27,52,0.62);
}.chart{position: relative;height: 90%;top:10%;
}
.backBtn{position: absolute;top:0;background-color: #00C298;border: 0;color:#fff;height: 27px;font-family: Microsoft Yahei;font-size: 1em;cursor: pointer;
}

index.js

$(function () {//dom加载后执行mapChart('mapChart')
})/*** 根据Json里的数据构造Echarts地图所需要的数据* @param {} mapJson */
function initMapData(mapJson) {var mapData = [];for (var i = 0; i < mapJson.features.length; i++) {mapData.push({name: mapJson.features[i].properties.name,//id:mapJson.features[i].id})}return mapData;
}/*** 返回上一级地图*/
function back() {if (mapStack.length != 0) {//如果有上级目录则执行var map = mapStack.pop();$.get('./asset/json/map/' + map.mapId + '.json', function (mapJson) {registerAndsetOption(myChart, map.mapId, map.mapName, mapJson, false)//返回上一级后,父级的ID、Name随之改变parentId = map.mapId;parentName = map.mapName;})}}
/*** Echarts地图*///中国地图(第一级地图)的ID、Name、Json数据
var chinaId = 100000;
var chinaName = 'china'
var chinaJson = null;//记录父级ID、Name
var mapStack = [];
var parentId = null;
var parentName = null;//Echarts地图全局变量,主要是在返回上级地图的方法中会用到
var myChart = null;
function mapChart(divid) {$.get('./asset/json/map/' + chinaId + '.json', function (mapJson) {chinaJson = mapJson;myChart = echarts.init(document.getElementById(divid));registerAndsetOption(myChart, chinaId, chinaName, mapJson, false)parentId = chinaId;parentName = 'china'myChart.on('click', function (param) {var cityId = cityMap[param.name]if (cityId) {//代表有下级地图$.get('./asset/json/map/' + cityId + '.json', function (mapJson) {registerAndsetOption(myChart, cityId, param.name, mapJson, true)})} else {//没有下级地图,回到一级中国地图,并将mapStack清空registerAndsetOption(myChart, chinaId, chinaName, chinaJson, false)mapStack = []parentId = chinaId;parentName = chinaName;}// $.get('./asset/json/map/'+param.data.id+'.json', function (mapJson,status) {//     registerAndsetOption(myChart,param.data.id,param.name,mapJson,true)// }).fail(function () {//     registerAndsetOption(myChart,chinaId,'china',chinaJson,false)// });});})
}/*** * @param {*} myChart * @param {*} id        省市县Id* @param {*} name      省市县名称* @param {*} mapJson   地图Json数据* @param {*} flag      是否往mapStack里添加parentId,parentName*/
function registerAndsetOption(myChart, id, name, mapJson, flag) {echarts.registerMap(name, mapJson);myChart.setOption({series: [{type: 'map',map: name,itemStyle: {normal: {areaColor: 'rgba(23, 27, 57,0)',borderColor: '#1dc199',borderWidth: 1,},},data: initMapData(mapJson)}]});if (flag) {//往mapStack里添加parentId,parentName,返回上一级使用mapStack.push({mapId: parentId,mapName: parentName});parentId = id;parentName = name;}
}

Echarts中国地图三级钻取相关推荐

  1. Echarts实现中国地图多级钻取-可实现四级

    Echarts实现中国地图多级钻取-可实现四级 项目git地址 https://gitee.com/fuyanghulin/thermalMap 说明:上述项目只保留了浙江的geo地图(第四级无街道) ...

  2. Vue + Echarts 实现中国地图多级钻取功能

    传送门:本文完整代码地址 如果觉得有帮助,别忘了点亮 star 哦 说明: 本文为 Vue 2.x + Echarts 5.x 实现中国地图多级钻取功能(基本版 未做过多功能拓展和样式优化 便于二次开 ...

  3. Echarts中国地图各省份区域设置不同的颜色

    摘要: 接着<Echarts引入中国地图>续写,我们的项目需求是要求地图的背景颜色要各省份不同.看了文档同时也看了相关官网例子,写出来总结下吧,以便以后需要. 实现: 1.在series中 ...

  4. echarts 中国地图 世界地图

    最近项目中用到了echarts 中国地图 世界地图,特在这记录一下. world.js 下载链接(world_new.js带有中国地区名称,另一个只是用来显示中国地图) 链接:https://pan. ...

  5. 【echarts 中国地图射线版本】vue实现中国地图航线动画效果,地图上添加散点效果【详细注释,通俗易懂】

    先上效果图 前置条件,必看 首先你需要安装echarts并引入 然后你需要下载china.json文件并注册引入,不然不生效 当然很多新手可能不知道china.json在哪里下载,因为官方已经没有了, ...

  6. Echarts中国地图背景颜色渐变

    摘要:关于Echarts地图的问题,在第一篇就说过引入等相关问题(如还有疑惑请先看之前的文章传送门).地图的背景颜色如何实现渐变呢?主要利用的是Echarts中的geo和visualMap结合实现.v ...

  7. VUE 中实现echarts中国地图 人口迁徙

    VUE 中实现echarts中国地图 人口迁徙 效果图: 安装Echarts依赖 要在vue中使用Echarts 需要先安装依赖 npm install echarts --save 这是我的Echa ...

  8. HTML中地图根据数据变色,echarts中国地图根据数据对省份渲染不同的颜色

    echarts中国地图 .centerItem { width: 856px; height: 640px; background-color: #fff; margin: 110px auto 0 ...

  9. 【echarts 中国地图增加南海九段线】

    echarts 中国地图增加南海九段线 最近在开发echarts 中国地图时,客户提出中国地图要完整,需要增加南海九段线. 这是个政治任务,但是echarts里面的文档没有关于南海诸岛九段线的相关配置 ...

最新文章

  1. weblogic集群安装心得-程序包发布
  2. unity工程包怎么上传git_如何将Git用于Unity3D源代码管理?
  3. 聚类之isodata算法
  4. activiti官网实例项目activiti-explorer之扩展流程节点属性
  5. 一位编辑人员给作者们的市场汇报——冰冰子组织的市场宣传活动介绍之交互设计篇
  6. 八个小技巧教你做出舒服的MG动画
  7. windows下刻录U盘启动盘安装linux报错解决
  8. vmlinuz文件解压方法
  9. esp8266 从硬件开发到app制作的简单示例
  10. EhCache的使用
  11. 论文参考文献尾注引用方法
  12. 数据类型,栈内存、堆内存
  13. VS2019未定义标识符detect该怎么解决
  14. java程序设计心得_学习Java编程的学习方法总结
  15. 化身预言家:利用机器学习与谷歌地图实时预测交通事故风险
  16. unity particle system 粒子系统 制作闪电放电效果
  17. 如何快速对接淘宝开放平台API接口(淘宝店铺订单明文接口,淘宝店铺商品上传接口,淘宝店铺订单交易接口)
  18. 软件构造——可维护性
  19. 跟美女上床和次待危机
  20. 电路中的中英文词汇对照

热门文章

  1. 柯莱特CTO谈企业选择CRM的六大目标
  2. 自学成才的黑客(安全研究员)是从哪学到那些知识的?(跳转知乎)
  3. 史上最全的APP运营推广方案~
  4. Poco库使用:事件通知
  5. java json escape_关于json数据中的多反斜杆转译--StringEscapeUtils.unescapeJava(踩过的坑)...
  6. 隐私政策协议和人脸服务协议
  7. spring boot在启动程序之前执行逻辑
  8. 如何在系统测试中关注安全问题
  9. v-for里面再嵌套一个v-for的写法
  10. 2022-2028中国等级5Ti-6Al-4V合计市场现状研究分析与发展前景预测报告