在react项目用echarts绘制中国地图

文章目录

  • 一、引入echarts
  • 二、下载地图json数据
  • 三、编写react组件
  • 四、组件使用

一、引入echarts

安装:npm i echarts --save
在这里插入图片描述

二、下载地图json数据

由于echarts内部不再支持地图数据,所以要绘制地图需要自己去下载数据。建议使用阿里云的。
地址:https://datav.aliyun.com/portal/school/atlas/area_selector

在这里插入图片描述
默认展示的是全国地图,如果想要某市的json数据,点击对应省份即可。

本文中直接复制了json数据,然后将数据保存为geoJson.js,如下:
在这里插入图片描述

三、编写react组件

// components/chinaMap/index.tsximport { useRef, useEffect } from "react";
import * as echarts from "echarts";
import { geoJson } from "./geoJson";const ChinaMap = ({option,width = "100%",height = "100%",
}: {option: any;width?: string;height?: string;
}) => {const ref = useRef(null);let mapInstance: echarts.ECharts | null;const renderMap = () => {if (ref.current) {const renderedMapInstance = echarts.getInstanceByDom(ref.current);if (renderedMapInstance) {mapInstance = renderedMapInstance;} else {mapInstance = echarts.init(ref.current);}mapInstance.setOption(option);}};useEffect(() => {echarts.registerMap("china", geoJson as any);renderMap();// eslint-disable-next-line react-hooks/exhaustive-deps}, []);useEffect(() => {window.onresize = function () {// 调用 echarts实例上 resize 方法mapInstance?.resize();};return () => {// 销毁实例,销毁后实例无法再被使用。mapInstance && mapInstance.dispose();};// eslint-disable-next-line react-hooks/exhaustive-deps}, []);return <div ref={ref} style={{ width: width, height: height }} />;
};export default ChinaMap;

四、组件使用

// src/views/home/chart/map.tsximport React from "react";
import ChinaMap from "@/components/chinaMap/index";const dataList = [{value: 218,name: "北京",},{value: 122,name: "广东",},{value: 119,name: "台湾",},{value: 81,name: "香港",},{value: 74,name: "山东",},{value: 68,name: "江苏",},{value: 62,name: "浙江",},{value: 49,name: "上海",},{value: 48,name: "河北",},{value: 43,name: "河南",},{value: 41,name: "辽宁",},{value: 38,name: "NULL",},{value: 36,name: "四川",},{value: 33,name: "湖北",},{value: 31,name: "湖南",},{value: 29,name: "安徽",},{value: 28,name: "吉林",},{value: 26,name: "江西",},{value: 24,name: "新疆",},{value: 24,name: "重庆",},{value: 23,name: "福建",},{value: 19,name: "广西",},{value: 18,name: "山西",},{value: 16,name: "云南",},{value: 16,name: "内蒙古",},{value: 16,name: "黑龙江",},{value: 12,name: "陕西",},{value: 12,name: "天津",},{value: 11,name: "宁夏",},{value: 10,name: "甘肃",},{value: 8,name: "贵州",},{value: 4,name: "西藏",},{value: 4,name: "青海",},{value: 1,name: "海南",},
];const Map: React.FC = () => {const option: any = {title: {text: "数据地图",// subtext: "数据来源于阿里云平台",// sublink: "https://datav.aliyun.com/portal/school/atlas/area_selector",left: "right",textStyle: {color: "#000",},},// 提示框tooltip: {trigger: "item",showDelay: 0,transitionDuration: 0.2,formatter: (params: any) => {const { data = {} } = params;const { value = 0 } = data;return `${params.name}<br/>数量: ${value}`;},},// 工具导航toolbox: {show: true,left: "left",top: "top",feature: {// dataView: { readOnly: false },restore: {},saveAsImage: {},},},// 地图数据dataset: {source: dataList,},series: {type: "map",map: "china",roam: true, // 地图拖动、缩放top: "10%", // 距离顶部距离zoom: 1.2, // 当前视角的缩放比例scaleLimit: {max: 2,min: 1, // 设置默认缩放效果},// 文本标签,地区名, 控制样式,位置等等,可以是数组,多个label: {show: true, // 默认状态下,显示省市名称position: [1, 100], // 相对的百分比fontSize: 12,offset: [2, 0],align: "left",},itemStyle: {areaColor: "#e5f7ff", // 地图图形颜色 #fff// borderColor: "#a0d4e7", // 地图边框线色// borderWidth: 1, // 地图边框线宽},// 高亮状态下的多边形和文本样式,鼠标悬浮在地图块上的效果emphasis: {itemStyle: {areaColor: "#ccc",borderColor: "#4aacd9",},},},// 视觉映射组件visualMap: {type: "continuous",left: "right",min: 0,max: 218,inRange: {color: ["#e5f7ff","#096dd9",// "#fedeb5",// "#f96a35",// "#c3380e",// "#942005",// "#5b1305",],},text: [`最大值:218`, 0],textStyle: {color: "#000",},// calculable: true},};return (<><ChinaMap option={option} height="80vh" width="100%" />;</>);
};export default Map;

展示如下:
在这里插入图片描述
本文项目源码:https://download.csdn.net/download/ganyingxie123456/88800965?spm=1001.2014.3001.5503

echarts使用地图主要就是要先下载相关地理数据,其次就是按需求进行常规的option配置,并不难。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/785262.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chrome 设置在新窗口中打开链接(已登录google账号版)

Chrome的链接默认是在原标签页中打开的&#xff0c;如果要在新窗口中打开&#xff0c;需要自己自行设置&#xff0c;在此&#xff0c;针对已经登录google账号的chrome浏览器怎么进行设置进行说明。 一、点击登录图标->更多设置 二、选择其他设置->在新窗口中打开搜索结果…

砍树c++

题目&#xff1a; 代码&#xff1a; #include<bits/stdc.h> using namespace std; long long n,m,a[100000005]; bool jltm(int x){long long sum0;for(int i1;i<n;i){if(a[i]>x) sumsuma[i]-x;}//计算此时锯片高度砍掉的木材if(sum>m) return 1;else return 0…

怎么在UE游戏中加入原生振动效果

我是做振动触感的。人类的五感“视听嗅味触”&#xff0c;其中的“触”就是触觉&#xff0c;是指皮肤、毛发与物体接触时的感觉。触感可以带来更加逼真的沉浸式体验。但也许过于司空见惯&#xff0c;也是习以为常&#xff0c;很多人漠视了触感的价值。大家对触感的认知还远远不…

Oracle19c ADG搭建

文章目录 一、环境配置1、主机环境2、host文件配置 二、主库配置1、 开启归档2、redo日志3、修改参数文件4、配置TNS文件5、静态监听6、拷贝密码文件 三、备库配置1、开启归档2、redo日志3、修改参数文件4、配置TNS文件5、配置静态监听 四、构建DG1、验证监听2、主库登入rman&a…

排序——选择排序(直接选择排序和堆排)

本专栏和大家分享关于排序的算法,其中有插入排&#xff08;直接插入排序和希尔排序&#xff09;、选择排序&#xff08;直接选择排序和堆排&#xff09;、交换排序&#xff08;冒泡排序和快速排序&#xff09;、归并排序以及其他非基于比较的排序 本文与大家分享选择排序 目录 …

【pytest、playwright】多账号同时操作

目录 方案实现思路&#xff1a; 方案一&#xff1a; 方案二&#xff1a; 方案实现思路&#xff1a; 依照上图所见&#xff0c;就知道&#xff0c;一个账号是pytest-playwright默认的环境&#xff0c;一个是 账号登录的环境 方案一&#xff1a; 直接上代码&#xff1a; imp…

Tensorflow2.0笔记 - 自定义Layer和Model

本笔记主要记录如何在tensorflow中实现自定的Layer和Model。详细内容请参考代码中的链接。 import time import tensorflow as tf from tensorflow import keras from tensorflow.keras import datasets, layers, optimizers, Sequential, metricstf.__version__ #关于自定义l…

JRT业务开发起步

这是一段充满挑战与奋斗的旅程&#xff0c;自第一行Java代码的写下起&#xff0c;便历经重重险阻。从细微的代码行&#xff0c;逐步汇聚成实用的工具类方法&#xff1b;从工具类方法的积累&#xff0c;逐渐构建起功能强大的工具包&#xff1b;再从工具包的整合&#xff0c;最终…

走进标杆企业——成套数字化标杆观摩游学(重庆站)

为了推进工业电气加工与设计的效率提升&#xff0c;加快企业数字化、网络化和智能化管理的步伐&#xff0c;利驰软件(苏州)有限公司&#xff08;下文简称利驰软件&#xff09;在重庆于2024年3月22日举办了一场成套数字化标杆观摩游学。此次为期一天的活动吸引了湘鄂渝地区专家们…

视频素材下载哪个软件好?几个素材库视频免费下载

在浩瀚的创意海洋中&#xff0c;找到完美的无水印视频素材犹如寻宝一般&#xff0c;每一段精彩的视频片段都能为您的作品增色不少。无论您是视频制作新手&#xff0c;还是经验丰富的专业人士&#xff0c;这里有全球各地的精选视频素材网站&#xff0c;旨在激发您的灵感&#xf…

EfficientSAM 项目排坑

EfficientSAM 项目排坑 任务过程记录创建环境运行示例 任务 跑通这个项目代码 过程记录 创建环境 readme里没有说具体怎么配置环境&#xff0c;所以可能对我来说还挺困难的。 现把项目git下来&#xff1a; git clone https://github.com/yformer/EfficientSAM.git cd Effi…

Flask Python:请求上下文和应用上下文

请求上下文和应用上下文详解 一、背景二、什么是上下文2.1、请求上下文2.2、应用上下文2.3、两种上下文的底层逻辑 三、写在最后 一、背景 在如何实现异步发送邮件的时候&#xff0c;遇到过这样一个报错 RuntimeError: Working outside of request context.This typically me…

【机器学习】数据探索---python主要的探索函数

在上一篇博客【机器学习】数据探索(Data Exploration)—数据质量和数据特征分析中&#xff0c;我们深入探讨了数据预处理的重要性&#xff0c;并介绍了诸如插值、数据归一化和主成分分析等关键技术。这些方法有助于我们清理数据中的噪声、消除异常值&#xff0c;以及降低数据的…

C语言内存函数(超详解)

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 点击主页&#xff1a;optimistic_chen和专栏&#xff1a;c语言&#xff0c; 创作不易&#xff0c;大佬们点赞鼓…

KIl5:Stm32L071下载出现flash download faild “cortex-m0+“的解决方法

首先看看有没有芯片&#xff0c;没有芯片下载一下 下载并在device选择对应的芯片 选择调试器 选择flash

C++ 二叉树OJ题

&#x1f493;博主CSDN主页:麻辣韭菜-CSDN博客&#x1f493;   ⏩专栏分类&#xff1a;C知识分享⏪   &#x1f69a;代码仓库:C高阶&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C知识   &#x1f51d;&#x1f51d; 前言 C二叉搜索树 这篇讲解了搜索二叉…

MySQL经验分享:Shell开发问题

背景 之前整理过Python连接使用MySQL的经验&#xff0c;链接如下&#xff1a; pymysql封装总结_pymysql封装类-CSDN博客 相比高级语言&#xff0c;Shell与MySQL开发使用相对会更麻烦一些&#xff1b;由于 shell是linux命令集的概称&#xff0c;是属于命令行的人机界面。Shel…

1688采集商品信息 马帮 店小秘 芒果采集API接口 java php

1688详情API接口是一种基于开放平台的应用程序接口&#xff0c;它能够实现与1688平台的数据交互&#xff0c;让商家能够更加方便地获取商品详情、库存信息、价格变动等重要数据。通过这一接口&#xff0c;商家可以实时掌握市场动态&#xff0c;快速响应消费者需求&#xff0c;从…

jenkins进行自动化部署

jenkins自动化部署 hello&#xff0c;大家好&#xff0c;前文我们已经下载好我们的jenkins了&#xff0c;下面我们用jenkins来实现自动化部署啦&#xff01; 一、下载插件 我们选择插件管理 一个是Maven Integration plugin&#xff0c;一个是 Publish Over SSH 这里因为作…