React+echarts (echarts-for-react) 画中国地图及省份切换
有足够的地图数据,可以点击到街道,示例我只出到市级
以umi为框架,版本是:


示例中需要地图的Geojson数据,中国地图和省份的 geoJson 可以在 echarts-map 或者阿里的 数据可视化中心 进行下载。(我这边示例用的是阿里的数据)

废话少说,上代码:
1 import EChartsReact from 'echarts-for-react';
2 import * as echarts from 'echarts';
3 import china from "@/assets/MapJson/全国.json"; //默认引入全国地图
4 import { useRef, } from 'react';
5 echarts.registerMap('map', china);//默认注册全国地图
6 export default () => {
7 let curRef = useRef(null);
8 let height = window.screen.availHeight
9
10 let option = {
11 title: {
12 text: '全国地图',
13 textStyle: {
14 color: "#000",
15 },
16 left: 'center',
17 },
18 series: [
19 {
20 name: '全国地图',
21 type: 'map',
22 mapType: 'map',
23 scaleLimit: {
24 //滚轮缩放的极限控制
25 min: 0.5, //缩放最小大小
26 max: 10, //缩放最大大小
27 },
28
29 label: { // 图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。
30 show: true, //显示省市名称
31 position: [1, 100], // 相对的百分比
32 fontSize: 12,
33 offset: [2, 0], // 是否对文字进行偏移。默认不偏移。例如:`[30, 40]` 表示文字在横向上偏移 `30`,纵向上偏移 `40`。
34 align: "left" // 文字水平对齐方式,默认自动。
35 },
36 itemStyle: { // 地图区域的多边形 图形样式
37 areaColor: "#fff" // 地图图形颜色
38 },
39 roam: true, // 是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 `'scale'` 或者 `'move'`。设置成 `true` 为都开启
40 zoom: 1.25, // 当前视角的缩放比例
41 }
42 ]
43 }
44
45 return <div className='bazaarMap'>
46 <EChartsReact option={option} ref={curRef} style={{ width: '100%', height: height, zIndex: 222 }}
47 lazyUpdate={true} notMerge={true} onEvents={{
48 'click': (param: any) => {//echarts点击事件
49 if (param.name) {//判断名称是否为空
50 const echartInstance = curRef.current.getEchartsInstance();//获取echarts实例
51 let options = echartInstance.getOption()//获取option
52
53 let provinceJSON = null
54 try {
55 provinceJSON = require(`@/assets/MapJson/${param.name}.json`);//根据点击的省名称查询Geojson地图数据(我是将地图数据全部保存在本地,可根据API获取地图json)
56 echarts.registerMap('map', provinceJSON);//注册点击的省份地图
57
58 options.title[0].text = param.name + '地图'
59 options.series[0].name = param.name + '地图'
60
61 // options.series[0].center = china.features.find(item => item.properties.name === param.name)?.properties?.center//修改点击后地图中心位置,不用会存在偏移,我使用下边null,默认全局居中
62 options.series[0].center = null; //修改点击后地图中心位置,null默认全局居中
63 echartInstance.setOption(options, true)//修改echarts option
64 } catch (error) {//获取Geojson地图异常返回到全国地图,我只存在市级地图数据,所以点击市级行政区会返回到全国地图。
65 options.title[0].text = '全国地图'
66 echarts.registerMap('map', china);
67 options.series[0].name = '全国地图'
68
69 options.series[0].center = null
70 echartInstance.setOption(options, true)
71 }
72 }
73 },
74 }} />
75 </div>
76 }
地图Geojson数据存放路径:src\assets\MapJson

亲测可用!
React+echarts (echarts-for-react) 画中国地图及省份切换的更多相关文章
- echarts画中国地图并上色
任务是画一个中国地图,并在指定区域上颜色,学姐说用arcgis画,乖乖,4个g的安装文件,算了, 还是echarts大法好..如果想熟悉这个牛X的工具,请移步https://www.w3cschool ...
- echarts画中国地图,省市区地图分享
中国地图 四川地图 重庆地图 源码分享: https://github.com/livelyPeng/ec-map
- vue中使用echarts来绘制世界地图和中国地图
第一步,下载echarts cnpm install echarts --save-dev 第二步,在main.js中全局引入 //引入echarts import echarts from 'ech ...
- Echarts 绘图(饼图,中国地图)
一个使用Javascript 实现的开源可视化库,可以流畅的运行在pc 和移动设备上,兼容当前绝大部分浏览器(Chrome ,firefox,IE8)等 底层依赖轻量级的矢量图形库ZRender,提供 ...
- matlab利用m_map工具包画中国地图及散点云图
开始之前需要准备好malab,中国地图shp文件,m_map工具包. 中国地图shp文件可以在下面的链接中下载: https://gadm.org/download_country_v3.html 本 ...
- echarts 中国地图 数据自动提示
mounted() { // 首先每种图是根据series -->type决定的 eg:bar--柱状图 line 折线图 pie饼图 map地图等等三部曲 跟着走 // @第一步都是初始化 v ...
- 用R画有图例的中国地图
近期在网上找了几种画中国地图方法,终于认为这种方法还是最适用的 1.用googlevis包.因为中国国情如今已经不能訪问google地图了.所以大多中国用户来说仅仅能望洋兴叹了. 2.用ggplot包 ...
- PHP+Mysql+jQuery实现中国地图区域数据统计(raphael.js)
使用过百度统计或者cnzz统计的童鞋应该知道,后台有一个地图统计,不同访问量的省份显示的颜色也不一样,今天我将带领大家开发一个这样的案例.上一篇<使用raphael.js绘制中国地图>文章 ...
- react使用echarts地图实现中国地图大区展示
日常项目中经常会用到百度地图或者echarts图标展示,今天给大家展示的是如何在react开发项目中使用百度echars的地图展示,把中国地图分为东北大区.华东大区.华南大区.华西大区.华中大区以及华 ...
- vue+vuex+axios+echarts画一个动态更新的中国地图
一. 生成项目及安装插件 # 安装vue-cli npm install vue-cli -g # 初始化项目 vue init webpack china-map # 切到目录下 cd china- ...
随机推荐
- Dynamic CRM插件中记录日志-Nlog记录到文本
Dynamic CRM插件中记录日志的方式有多种 通常情况下分为ITracingService记录.单独日志表插入记录.文本记录三种. 之前整理过ITracingService记录的方式,但这种记录有 ...
- ping: sina.cn: Name or service not known
该方法针对Ubuntu18及以后版本. 第一次遇到ping:报错Name or service not known这个问题在百度上找了很久说的都是什么修改 /etc/resolv.conf,但每次修改 ...
- 跟羽夏学 Ghidra ——工具
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...
- Docker安装MySQL并使用Navicat连接
MySQL简单介绍: MySQL 是一个开放源码的关系数据库管理系统,开发者为瑞典 MySQL AB 公司.目前 MySQL 被广泛地应用在 Internet 上的大中小型网站中.由于其体积小.速度快 ...
- 基于深度学习的文本分类案例:使用LSTM进行情绪分类
Sentiment classification using LSTM 在这个笔记本中,我们将使用LSTM架构在电影评论数据集上训练一个模型来预测评论的情绪.首先,让我们看看什么是LSTM? LSTM ...
- Kibana可视化数据(Visualize)详解
可视化 (Visualize) 功能可以为您的 Elasticsearch 数据创建可视化控件.然后,您就可以创建仪表板将这些可视化控件整合到一起展示. Kibana 可视化控件基于 Elastics ...
- 服务器设置X-Frame-Options Header响应头(Tomcat,服务器,项目)
解决方案(修改tomcat配置文件) 打开Tomcat配置文件(conf\web.xml)搜索 httpHeaderSecurity有两处地方 <!--第一处将注释放开--> <fi ...
- 改善C#程序的方法-1 操作字符串
正确操作字符串 引言: 字符串是使用很频繁的一种数据类型. 如果使用不慎,则会为一次字符串操作所带来的额外性能开销而付出代价. 下面从这几个方面来探讨如何正确操作字符串: 1.确保尽量少的装箱,尽可能 ...
- cf1082 A. Vasya and Book
中文题意: 思路:我们先看看能不能直接从x翻到y,abs(y-x)%d==0,可以就直接输出abs(y-x)/d咯,不行的话之后有2种操作 1.先翻回到第一页,从第一页看看能不能范到y,不能的话翻到最 ...
- SpringBoot(五) - Java8 新特性
1.Lambda表达式 Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递).使用它可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风 ...