Vue项目中使用ECharts构建交互式中国地图的详细指南

🌟 前言

欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍

  • 🤖 洛可可白:个人主页

  • 🔥 个人专栏:✅前端技术 ✅后端技术

  • 🏠 个人博客:洛可可白博客

  • 🐱 代码获取:bestwishes0203

  • 📷 封面壁纸:洛可可白wallpaper

在这里插入图片描述

文章目录

  • Vue项目中使用ECharts构建交互式中国地图的详细指南
      • 效果图
      • 步骤 1: 安装 ECharts 和 ECharts 相关插件
      • 步骤 2: 安装中国地图数据
      • 步骤 3: 在 Vue 组件中引入 ECharts 和 地图数据
      • 步骤 4: 创建地图实例并配置
      • 步骤 5: 在模板中添加地图容器
      • 步骤 6: 调整和优化
      • 立体效果
    • 🎉 往期精彩回顾

Vue项目中使用ECharts构建交互式中国地图的详细指南

效果图

在这里插入图片描述

在Vue项目中使用ECharts创建中国地图,你需要遵循以下步骤:

步骤 1: 安装 ECharts 和 ECharts 相关插件

首先,确保你的项目中已经安装了ECharts。如果没有,可以使用npm或yarn来安装:

npm install echarts --save

步骤 2: 安装中国地图数据

地图数据获取网站:阿里云数据可视化平台

ECharts 使用 JSON 格式的地理数据来渲染地图。你可以在上面这个网站下载中国省级行政区划的 JSON 文件。放入工程的静态文件目录下方。

步骤 3: 在 Vue 组件中引入 ECharts 和 地图数据

在你的Vue组件中,引入ECharts和中国地图数据:

import * as echarts from "echarts";
import china from "@/assets/china.json"; // 引入中国地图数据

步骤 4: 创建地图实例并配置

在你的Vue组件的mounted生命周期钩子中,创建ECharts实例并配置地图选项:

import { ref, onMounted, getCurrentInstance } from "vue";
import * as echarts from "echarts";
import china from "@/assets/china.json";
const mapData: any = china;
const points = ref([// 散点图数据{name: "广东",value: [113.266887, 23.133306],itemStyle: { color: "#00EEFF" },}, // 广东
]);
const linesData = ref([{coords: [[116.407387, 39.904179],[113.266887, 23.133306],],}, // 北京->广东
]);
const planePath = // 飞机svg"path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z";
onMounted(() => {// getCurrentInstance().refs.charts 获取charts节点对象const Instance: any = getCurrentInstance();const refCharts: any = Instance.refs.charts;const charts: any = echarts.init(refCharts);initCharts(charts);
});
function initCharts(charts: any) {const option = {backgroundColor: "#0E2152", // 背景颜色geo: {// 地图配置map: "china",label: {// 图形上的文本标签normal: {// 通常状态下的样式show: true,textStyle: {color: "#fff",},},emphasis: {// 鼠标放上去高亮的样式textStyle: {color: "#fff",},},},itemStyle: {// 地图区域的样式设置normal: {// 通常状态下的样式borderColor: "#5089EC",borderWidth: 1,areaColor: {//地图区域的颜色type: "radial", // 径向渐变x: 0.5, // 圆心y: 0.5, // 圆心r: 0.8, // 半径colorStops: [{// 0% 处的颜色offset: 0,color: "rgba(0, 102, 154, 0)",},{// 100% 处的颜色offset: 1,color: "rgba(0, 102, 154, .4)",},],},},// 鼠标放上去高亮的样式emphasis: {areaColor: "#2386AD",borderWidth: 0,},},},series: [{// 散点系列数据type: "effectScatter", // 带有涟漪特效动画的散点(气泡)图coordinateSystem: "geo", //该系列使用的坐标系:地理坐标系// 特效类型,目前只支持涟漪特效'ripple',意为“涟漪”effectType: "ripple",// 配置何时显示特效。可选'render'和'emphasis' 。showEffectOn: "render",rippleEffect: {// 涟漪特效相关配置。period: 10, // 动画的周期,秒数。scale: 4, // 动画中波纹的最大缩放比例。// 波纹的绘制方式,可选 'stroke' 和 'fill'。brushType: "fill",},zlevel: 1, // 所有图形的 zlevel 值。data: points.value,},{// 线条系列数据type: "lines",zlevel: 2,symbol: ["none", "arrow"], // 标记的图形: 箭头symbolSize: 10, // 标记的大小effect: {// 线条特效的配置show: true,period: 6, // 特效动画的时间,单位strailLength: 0, // 特效尾迹的长度。取值[0,1]值越大,尾迹越重symbol: planePath, // 特效图形的标记 可选'circle'等symbolSize: 15, // 特效标记的大小},lineStyle: {// 线条样式normal: {color: "#93EBF8",width: 2.5, // 线条宽度opacity: 0.6, // 尾迹线条透明度curveness: 0.2, // 尾迹线条曲直度},},data: linesData.value,},],};// 地图注册,第一个参数的名字必须和option.geo.map一致echarts.registerMap("china", /**/ mapData);charts.setOption(option);
}

步骤 5: 在模板中添加地图容器

在你的Vue组件的模板中,添加一个容器来承载地图:

<template><div class="content"><divref="charts"style="width: 1200px; height: 100vh; margin: 0 auto"></div></div>
</template>

步骤 6: 调整和优化

.content {background-color: #0e2152;height: 100%;
}

根据你的实际需求,你可以调整地图的样式、颜色、数据等。你还可以为地图添加交互,如点击事件、提示框等。

立体效果

在这里插入图片描述

<template><div class="content"><div class="chart-container"><div ref="upperChartContainer" class="upper-chart"></div><div ref="lowerChartContainer" class="lower-chart"></div></div></div>
</template><script setup lang="ts">
import { ref, onMounted, onBeforeUnmount } from "vue";
import * as echarts from "echarts";
import jiangxi from "@/assets/jiangxi.json";
const mapData: any = jiangxi;
const upperChartContainer = ref<HTMLElement | null>(null);
const lowerChartContainer = ref<HTMLElement | null>(null);
let upperChart: echarts.ECharts | null = null;
let lowerChart: echarts.ECharts | null = null;onMounted(() => {upperChart = echarts.init(upperChartContainer.value!);lowerChart = echarts.init(lowerChartContainer.value!);initUpperChart();initLowerChart();addClickEventListener();
});onBeforeUnmount(() => {if (upperChart) {upperChart.dispose();upperChart = null;}if (lowerChart) {lowerChart.dispose();lowerChart = null;}
});function initUpperChart() {echarts.registerMap("jiangxi", mapData);const option: echarts.EChartsOption = {backgroundColor: "transparent",series: [{type: "map",map: "jiangxi",roam: false,emphasis: {label: {show: true,},},itemStyle: {areaColor: "#0e2152", // 上层地图颜色},data: [],},],};if (upperChart) {upperChart.setOption(option);}
}function initLowerChart() {echarts.registerMap("jiangxi", mapData);const option: echarts.EChartsOption = {backgroundColor: "transparent",title: {text: "地图",left: "center",textStyle: {color: "#000",fontSize: 28,},},tooltip: {trigger: "item",formatter: (params: any) => {// const { name, center, centroid } = params;return `地区名称: ${params.name}<br/>ID: ${params.dataIndex}`;},},series: [{type: "map",map: "jiangxi",roam: false,emphasis: {label: {show: true,},},itemStyle: {areaColor: "#fff", // 下层地图颜色},label: {show: true,},data: [],},],};if (lowerChart) {lowerChart.setOption(option);}
}function addClickEventListener() {if (lowerChart) {lowerChart.on("click", (params: any) => {if (params.name) {console.log("点击了上层地图区域:" + params.name);}});}
}
</script><style scoped>
.chart-container {width: 100%;height: 800px;
}.upper-chart {width: 100%;height: 100vh; /* 总高度为 800 像素,上下距离为 50 像素,因此上层地图高度为 750 像素 */
}.lower-chart {width: 100%;height: 100vh;transform: translateY(-101vh) translateX(-10px);
}
</style>

以上步骤展示了如何在Vue中使用ECharts创建一个基本的中国地图。你可以根据需要进一步定制地图,例如添加更多的视觉元素、交互功能或者根据实际数据动态更新地图。

🎉 往期精彩回顾

主流开发语言和开发环境、程序员如何选择职业赛道?

  • 852阅读 · 27点赞 · 9收藏

VS code搭建C/C++运行环境简单易上手

  • 2803阅读 · 5点赞 · 8收藏

Vue.2&Vue.3项目引入Element-UI教程&踩坑

  • 9284阅读 · 22点赞 · 82收藏

Vue项目引入Echarts可视化图表库教程&踩坑

  • 2209阅读 · 3点赞 · 5收藏

VirtualBox虚拟机搭建CentOS系统教程

  • 4502阅读 · 4点赞 · 32收藏

VS Code上搭建Vue开发环境

  • 10709阅读 · 13点赞 · 66收藏

Color-UI 简介及使用教程

  • 5932阅读 · 2点赞 · 13收藏

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

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

相关文章

ASP.NET-Server.UrlEncode

目录 背景: Server.UrlEncode作用: 1.URL 编码&#xff1a; 2.避免冲突&#xff1a; 3.安全性&#xff1a; 4.规范化&#xff1a; 实例说明: 不使用Server.UrlEncode 使用Server.UrlEncode 总结: 背景: Server.UrlEncode方法在ASP.NET中主要功能是对URL中的参数进行编…

使用 Boot Camp 助理查明您的 Mac 需不需要 Windows 安装介质

使用 Boot Camp 助理查明您的 Mac 需不需要 Windows 安装介质 当前的 Mac 机型无需介质即可安装 Windows&#xff0c;也就是说&#xff0c;您不需要用到外置驱动器。较早的 Mac 机型需要用到 USB 驱动器或光盘驱动器。使用 Boot Camp 助理可查明您需要用到什么。 Boot Camp 助…

CXL-Enabled Enhanced Memory Functions——论文阅读

IEEE Micro 2023 Paper CXL论文阅读笔记整理 问题 计算快速链路&#xff08;CXL&#xff09;协议是系统社区的一个重要里程碑。CXL提供了标准化的缓存一致性内存协议&#xff0c;可用于将设备和内存连接到系统&#xff0c;同时保持与主机处理器的内存一致性。CXL使加速器&…

遗传算法及基于该算法的典型问题的求解实践

说明 遗传算法是一个很有用的工具&#xff0c;它可以帮我们解决生活和科研中的诸多问题。最近在看波束形成相关内容时了解到可以用这个算法来优化阵元激励以压低旁瓣&#xff0c;于是特地了解和学习了一下这个算法&#xff0c;觉得蛮有意思的&#xff0c;于是把这两天关于该算法…

SpringMVC 02

这里先附上前一篇的地址,以上系列均为博主的学习路线,仅供参考 初识Spring MVC-CSDN博客 下面我们从SpringMVC传递数组开始讲起 1.传递数组 传递数组的方式和传递普通变量的方式其实是相同的,下面我们附上传递的图片 RequestMapping("/r7")public String r1(String[…

笔记本电脑数据恢复:如何轻松地从笔记本电脑恢复文件

不小心从笔记本电脑中删除了一些重要文件&#xff1f;或者恶意软件和其他不可控因素是否导致您的文件消失&#xff1f;人们很容易认为这些文件已经永远消失&#xff0c;并且无法恢复。但这与事实相差甚远。通过遵循正确的数据恢复礼仪并使用良好的数据恢复工具&#xff0c;您可…

(done) 什么是词嵌入技术?word embedding ?(这里没有介绍词嵌入算法)(没有提到嵌入矩阵如何得到)

参考视频&#xff1a;https://www.bilibili.com/video/BV1sw411S7i1/?spm_id_from333.788&vd_source7a1a0bc74158c6993c7355c5490fc600 词嵌入&#xff08;word embedding&#xff09;&#xff1a;把词汇表中的词或短语 -------- 映射 ----> 固定长度向量 我们可以把 …

FPGA静态时序分析与约束(二)、时序分析

系列文章目录 FPGA静态时序分析与约束&#xff08;一&#xff09;、理解亚稳态 FPGA静态时序分析与约束&#xff08;三&#xff09;、读懂vivado时序报告 文章目录 系列文章目录前言一、时序分析基本概念1.1 时钟抖动1.2 时钟偏斜1.3 时钟不确定性Uncertainty1.4 建立时间和保…

DVWA靶场-CSRF跨站请求伪造

CSRF(跨站请求伪造)简介概念 CSRF&#xff08;Cross—site request forgery&#xff09;&#xff0c;跨站请求伪造&#xff0c;是指利用受害者未失效的身份认证信息&#xff08;cookie&#xff0c;会话等&#xff09;&#xff0c;诱骗其点击恶意链接或者访问包含攻击代码的页面…

nacos2.2.3 适配dm数据库

从github上下载了源码&#xff0c;选择了2.2.3分支后修改 适配后的代码下载&#xff0c;本地install用&#xff1a; nacos2.2.3_dm: 适配dm数据库 (gitee.com) alibba加了很多检查&#xff0c;跳过检查install命令&#xff1a; mvn -Prelease-nacos -Dmaven.test.skiptrue -D…

Django和Mysql数据库

Django学习笔记 Django和Mysql数据库 Django开发操作数据库更简单&#xff0c;内部提供了ORM框架。 1)安装mysqlclient pip3 install mysqlclient2)ORM ORM可以帮助我们做两件事&#xff1a; 1.创建、修改、修改数据库中的表&#xff08;不用写sql语句&#xff09;[不能创…

运维自动化之——Ansible

目录 一、自动化运维 1、通过xshell实现自动化运维 2、Ansible简介 3、Ansible特点及优势 4、Ansible核心程序 5、Ansible工作原理及流程 6、部署Ansible自动化运维工具 7、Ansible常用模块 ①ansible命令模块 ②command模块 ③shell模块 ④cron模块 ⑤user模块 …

Redis:ClassCastException【bug】

Redis&#xff1a;ClassCastException【bug】 前言版权Redis&#xff1a;ClassCastException【bug】错误产生相关资源控制器&#xff1a;UserController("/user")配置&#xff1a;RedisConfiguration实体类&#xff1a;User数据表&#xff1a;User 解决 最后 前言 2…

Windows蓝牙驱动开发之模拟HID设备(一)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)

by fanxiushu 2024-03-14 转载或引用请注明原作者 把Windows电脑模拟成蓝牙鼠标和蓝牙键盘&#xff0c;简单的说&#xff0c;就是把笨重的PC电脑当成鼠标键盘来使用。 这应该是一个挺小众的应用&#xff0c;但有时感觉也应该算比较好玩吧&#xff0c; 毕竟实现一种一般人都感觉…

Docker安装蜜罐Hfish

前言 无意中发现公司的一台服务器被爆破&#xff0c;修改了密码&#xff0c;为了确定内网是否安装需要搭建一个蜜罐来看一下是否存在隐患。 如何安装Docker&#xff0c;请查看我另一篇文章 https://blog.csdn.net/l1677516854/article/details/136751211 一、拉取镜像 dock…

工具类实现导出复杂excel、word

1、加入准备的工具类 package com.ly.cloud.utils.exportUtil;import java.util.Map;public interface TemplateRenderer {Writable render(Map<String, Object> dataSource) throws Throwable;}package com.ly.cloud.utils.exportUtil;import java.util.Map;public int…

Unity中的网格创建和曲线变形

Unity中的网格创建和曲线变形 3D贝塞尔曲线变形贝塞尔曲线基础线性公式二次方公式三次方公式 Unity 实现3D贝塞尔曲线变形准备工作脚本概述变量定义 变量解析函数解析 获取所有子节点GetAllChildren 获取所有子节点UpdateBezierBend 控制点更新CalculateBezier Bezier 曲线公式…

【算法杂货铺】二分算法

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 朴素二分查找 &#x1f4c2; 朴素二分模板 &#x1f4c1; 查找区间端点处 细节&#xff08;重要&#xff09; &#x1f4c2; 区间左端点处模板 &#x1f4c2; 区间右端点处模板 &#x1f4c1; 习题 1. 35. 搜索插入位…

phpcms头像上传漏洞引发的故事

目录 关键代码 第一次防御 第一次绕过 第二次防御 第二次绕过 第三次防御 第三次绕过 如何构造一个出错的压缩包 第四次防御 第四次绕过 本篇文章是参考某位大佬与开发人员对于文件包含漏洞的较量记录下的故事&#xff0c;因为要学习文件包含漏洞&#xff0c;就将大佬…

什么是 HTTPS?它是如何解决安全性问题的?

什么是 HTTPS&#xff1f; HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是一种安全的通信协议&#xff0c;用于在计算机网络上安全地传输超文本&#xff08;如网页、图像、视频等&#xff09;和其他数据。它是 HTTP 协议的安全版本&#xff0c;通过使用加…