当前位置: 首页 > news >正文

vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果

文章目录

        • 一、实现效果
        • 二、实现方法
          • 1、安装echarts插件
          • 2、获取省市json数据
          • 3、本例中data 数据
          • 4、吉林省地图的绘制
          • 5、柱状图样式
          • 6、设置柱状底部涟漪特效样式
          • 7、数据处理
        • 三、示例代码已上传,去顶部可下载
        • 四、效果展示

一、实现效果
  • 使用echarts实现省市地图绘制,你也可以绘制全国地图。
  • 根据数据在地图显示柱状图,根据经纬度实现定位。
  • 根据数据显示数据,涟漪动态效果。
  • 当然你也可以根据你自己的需求,增删效果哦。
二、实现方法
1、安装echarts插件
npm install echarts --save
2、获取省市json数据

https://datav.aliyun.com/portal/school/atlas/area_selector

通过 阿里旗下的高德地图提供的api ,可以获取到中国各个省份/区级/县级的json数据,但是区级和县级,并没有包含街道和乡镇的数据。

3、本例中data 数据

本文以吉林省地图为例,来实现吉林省下所有市的柱状图显示效果。
你也可以显示中国地图或其他身份地图。原理是一样的哦。

  • 定义一个容器map,最好是定义一个是ID名字的
<template><div class="map" id="map"></div>
</template>
  • 导入插件及吉林省数据,如果你是其他省份的,或全国的,一样的导入哦。
import * as echarts from "echarts";
import jilin from "./json/jilin.json";
  • 准备数据数据

后面这些数据是通过接口来获取的,本示例写的是静态测试数据,我这里是前端提前查询号的。你也可以自己查询。

经纬度查询定位

export default {data() {return {//城市坐标数据geoCoordMap: {"长春市": [125.31787, 44.05534],"吉林市": [126.68595, 43.85034],"通化市": [125.76539, 41.68568],"四平市": [124.02419, 43.48220],"白山市": [127.15109, 42.00513],"辽源市": [125.15042, 42.89406],"白城市": [122.83774, 45.07098],"延边朝鲜族自治州": [129.01009, 42.79950],"松原市": [124.55833, 44.94686],},//吉林省下所有市的测试数据testData: [{name: '长春市',value: '80',},{name: '吉林市',value: '70',},{name: '通化市',value: '60',},{name: '四平市',value: '50',},{name: '白山市',value: '90',},{name: '辽源市',value: '30',},{name: '白城市',value: '40',},{name: '延边朝鲜族自治州',value: '30',},{name: '松原市',value: '20',}]};},
}
4、吉林省地图的绘制

geo:地理坐标系组件。用于地图的绘制,支持在地理坐标系上绘制散点图,线集。geo 区域的颜色也可以被 map series 所控制。

ECharts 可以使用 GeoJSON 格式的数据作为地图的轮廓,你可以获取第三方的 GeoJSON 数据注册到 ECharts 中。

geo: [{map: 'jilin',zoom: 1.2, // 默认显示级别itemStyle: { //设置地图板块配置选项normal: {// 图形的描边颜色borderColor: '#55aaff',// 描边线宽。borderWidth: 1,// 柱条的描边类型。borderType: 'solid',areaColor: '#083D7E',},// // 鼠标放上去后,样式改变emphasis: {// 图形的描边颜色borderColor: '#1DF9FC',borderWidth: '2',// 阴影色areaColor: '#3099E2',},},label: {show: false,formatter: '',},},
],

geo属性说明:

  • map:使用 registerMap 注册的地图名称。
  • zoom:当前视角的缩放比例。
  • itemStyle:地图区域的多边形 图形样式。
  • emphasis:高亮状态下的多边形和标签样式。
  • label:图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。
5、柱状图样式

柱状图是利用3个样式层叠实现的。
1、顶部椭圆样式:type: ‘lines’
2、中部矩形样式:type: ‘scatter’
3、底部椭圆样式:type: ‘scatter’

type: 'lines',
zlevel: 5,
effect: {show: false,symbolSize: 5 // 图标大小
},
lineStyle: {width: 20, // 尾迹线条宽度color: 'rgb(22,255,255, .6)',opacity: 1, // 尾迹线条透明度curveness: 0 // 尾迹线条曲直度
},
6、设置柱状底部涟漪特效样式

带有涟漪特效动画的散点(气泡)图。利用动画特效可以将某些想要突出的数据进行视觉突出。

涟漪特效相关配置见下方代码注释。

type: 'effectScatter',
rippleEffect: { //涟漪特效相关配置period: 4, //动画的周期,秒数,值越小速度越快brushType: "stroke", //波纹的绘制方式,可选 'stroke' 和 'fill'scale: 2, //动画中波纹的最大缩放比例,值越大波纹越大 4color: 'rgb(22,255,255, 1)',//涟漪的颜色number: 2//波纹的数量
},
7、数据处理

根据接口数据,及经纬度坐标处理数据。

  • 动态计算柱形图的高度
lineMaxHeight() {const maxValue = Math.max(...this.testData.map(item => item.value))return 0.9 / maxValue
},
  • 柱状体的主干数据
lineData() {let {testData,geoCoordMap} = thisreturn testData.map((item) => {return {coords: [geoCoordMap[item.name], [geoCoordMap[item.name][0], geoCoordMap[item.name][1] + item.value * this.lineMaxHeight()]]}})
},
  • 柱状体的顶部
scatterTopData() {let {testData,geoCoordMap} = thisreturn testData.map((item) => {return [geoCoordMap[item.name][0], geoCoordMap[item.name][1] + item.value * this.lineMaxHeight(), item.value]})
},
  • 柱状体的底部
scatterBottomData() {let {testData,geoCoordMap} = thisreturn testData.map((item) => {return {name: item.name,value: geoCoordMap[item.name]}})
},
三、示例代码已上传,去顶部可下载

附全部代码

<template><div class="map" id="map"></div>
</template><script>
import * as echarts from "echarts";
import jilin from "@/json/jilin.json";
export default {data() {return {geoCoordMap: {"长春市": [125.31787, 44.05534],"吉林市": [126.68595, 43.85034],"通化市": [125.76539, 41.68568],"四平市": [124.02419, 43.48220],"白山市": [127.15109, 42.00513],"辽源市": [125.15042, 42.89406],"白城市": [122.83774, 45.07098],"延边朝鲜族自治州": [129.01009, 42.79950],"松原市": [124.55833, 44.94686],},testData: [{name: '长春市',value: '80',},{name: '吉林市',value: '70',},{name: '通化市',value: '60',},{name: '四平市',value: '50',},{name: '白山市',value: '90',},{name: '辽源市',value: '30',},{name: '白城市',value: '40',},{name: '延边朝鲜族自治州',value: '30',},{name: '松原市',value: '20',}]};},created() {},mounted() {this.drawMap()},methods: {drawMap() {// 判断地图是否渲染let myChart = echarts.getInstanceByDom(document.getElementById("map"))// 如果渲染则清空地图 if (myChart != null) {myChart.dispose()}// 初始化地图myChart = echarts.init(document.getElementById("map"));echarts.registerMap("jilin", jilin)var option = {geo: [{map: 'jilin',zoom: 1.2, // 默认显示级别itemStyle: { //设置地图板块配置选项normal: {// 图形的描边颜色borderColor: '#55aaff',// 描边线宽。borderWidth: 1,// 柱条的描边类型。borderType: 'solid',areaColor: '#083D7E',},// // 鼠标放上去后,样式改变emphasis: {// 图形的描边颜色borderColor: '#1DF9FC',borderWidth: '2',// 阴影色areaColor: '#3099E2',},},label: {show: false,formatter: '',},},],series: [// 柱状体的主干{type: 'lines',zlevel: 5,effect: {show: false,symbolSize: 5 // 图标大小},lineStyle: {width: 20, // 尾迹线条宽度color: 'rgb(22,255,255, .6)',opacity: 1, // 尾迹线条透明度curveness: 0 // 尾迹线条曲直度},silent: true,data: this.lineData()},// 柱状体的顶部{type: 'scatter',coordinateSystem: 'geo',geoIndex: 0,zlevel: 5,label: {show: true,formatter: function (e) {return `数值:${e.data[2]}`},position: "top"},symbol: 'circle',symbolSize: [20, 10],itemStyle: {color: 'rgb(22,255,255, 1)',opacity: 1},silent: true,data: this.scatterTopData()},// 柱状体的底部{type: 'scatter',coordinateSystem: 'geo',geoIndex: 0,zlevel: 4,label: {// 这儿是处理的formatter: '{b}',position: 'bottom',color: '#fff',fontSize: 12,distance: 10,show: true},symbol: 'circle',symbolSize: [20, 10],itemStyle: {// color: '#F7AF21',color: 'rgb(22,255,255, 1)',opacity: 1},silent: true,data: this.scatterBottomData()},// 底部外框{type: 'effectScatter',rippleEffect: { //涟漪特效相关配置period: 4, //动画的周期,秒数,值越小速度越快brushType: "stroke", //波纹的绘制方式,可选 'stroke' 和 'fill'scale: 2, //动画中波纹的最大缩放比例,值越大波纹越大 4color: 'rgb(22,255,255, 1)',//涟漪的颜色number: 2//波纹的数量},coordinateSystem: 'geo',geoIndex: 0,zlevel: 4,label: {show: false},symbol: 'circle',symbolSize: [40, 20],itemStyle: {color: {type: 'radial',x: 0.5,y: 0.5,r: 0.5,colorStops: [{offset: 0, color: 'rgb(22,255,255, 0)' // 0% 处的颜色},{offset: .74, color: 'rgb(22,255,255, 0)' // 100% 处的颜色},{offset: .75, color: 'rgb(22,255,255, 1)' // 100% 处的颜色},{offset: 1, color: 'rgb(22,255,255, 1)' // 100% 处的颜色}],},},data: this.scatterBottomData()}]}myChart.setOption(option)},// 动态计算柱形图的高度lineMaxHeight() {const maxValue = Math.max(...this.testData.map(item => item.value))return 0.9 / maxValue},// 柱状体的主干lineData() {let {testData,geoCoordMap} = thisreturn testData.map((item) => {return {coords: [geoCoordMap[item.name], [geoCoordMap[item.name][0], geoCoordMap[item.name][1] + item.value * this.lineMaxHeight()]]}})},// 柱状体的顶部scatterTopData() {let {testData,geoCoordMap} = thisreturn testData.map((item) => {return [geoCoordMap[item.name][0], geoCoordMap[item.name][1] + item.value * this.lineMaxHeight(), item.value]})},// 柱状体的底部scatterBottomData() {let {testData,geoCoordMap} = thisreturn testData.map((item) => {return {name: item.name,value: geoCoordMap[item.name]}})},},
}
</script><style scoped>
.map {width: 800px;height: 600px;position: relative;
}
</style>
四、效果展示

在这里插入图片描述

相关文章:

vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果

文章目录 一、实现效果二、实现方法1、安装echarts插件2、获取省市json数据3、本例中data 数据4、吉林省地图的绘制5、柱状图样式6、设置柱状底部涟漪特效样式7、数据处理 三、示例代码已上传&#xff0c;去顶部可下载四、效果展示 一、实现效果 使用echarts实现省市地图绘制&…...

Android aar包集成与报错

Android Studio引用AAR的方式&#xff0c;分为gradle7.0之前与7.0之后 一、集成步骤 方法一&#xff1a; 1.将对应的xxx.aar包复制到项目的libs目录下&#xff08;xxx代表需要引入的aar包名称&#xff09; 2.然后在模块的build.gradle文件中配置implementation files(libs/lib…...

CentOS 7.9 安装图解

特特特别的说明 CentOS发行版已经不再适合应用于生产环境&#xff0c;客观条件不得不用的话&#xff0c;优选7.9版本&#xff0c;8.5版本次之&#xff0c;最次6.10版本&#xff08;比如说Oracle 11GR2就建议在6版本上部署&#xff09;&#xff01; 引导和开始安装 选择倒计时结…...

Gitea Webhook报错 webhook.ALLOWED_HOST_LIST setting

Gitea Webhook报错 webhook.ALLOWED_HOST_LIST setting 登录到Gitea中&#xff0c;编辑app.ini vi /data/gitea/conf/app.ini [webhook] ALLOWED_HOST_LIST 你的IP地址示例 [webhook] ALLOWED_HOST_LIST 192.168.3.98...

SQL 最大连续合格次数 最大连胜记录次数 最大连败记录次数

有这样一个问题&#xff0c;工厂中要统计某个供应商送货检验的情况&#xff0c;依照其连续合格次数&#xff0c;决定是否免检&#xff0c;不使用游标或者循环&#xff0c;如何写这个sql。 此情景也可以用于统计连胜记录等 先要学习一下 窗函数LAG&#xff0c;指的是按分组和排…...

着色器语言GLSL学习

1 初步尝试 import { Scene, WebGLRenderer, OrthographicCamera, PlaneGeometry, ShaderMateria } from three.jsconst scene new Scene() const camera new OrthographicCamera(-1,1,1,-1,0.1, 10)const renderer new WebGLRenderer() renderer.setSize(window.innerWidt…...

C#: form 窗体的各种操作

说明&#xff1a;记录 C# form 窗体的各种操作 1. C# form 窗体居中显示 // 获取屏幕的宽度和高度 int screenWidth Screen.PrimaryScreen.Bounds.Width; int screenHeight Screen.PrimaryScreen.Bounds.Height;// 设置窗体的位置 this.StartPosition FormStartPosition.M…...

“尔滨”宠粉再升级!百亿像素VR冰雪盛宴

1月10日&#xff0c;由哈尔滨市委网信办、哈尔滨日报社主办&#xff0c;冰城客户端、哈尔滨新闻网承办的“激情迎亚冬&#xff0c;冰雪暖世界——2024年哈尔滨冰雪乐园”VR沉浸式体验产品正式上线。 如果你还没去过最近爆火出圈的“尔滨” ❄️这份哈尔滨冰雪景点VR❄️ 为你…...

redis原理(四)redis命令

目录 一、字符串命令&#xff1a; 二、列表命令&#xff1a; 三、集合命令&#xff1a; 四、散列命令&#xff1a; 五、有序集合命令&#xff1a; 六、redis发布与订阅命令&#xff1a; 七、事务命令 八、其他命令 1、排序&#xff1a;SORT 2、键的过期时间&#xff…...

FairGuard游戏安全2023年度报告

导 读&#xff1a;2023年&#xff0c;游戏行业摆脱了疫情带来诸多负面影响&#xff0c;国内游戏市场收入与用户规模双双实现突破&#xff0c;迎来了历史新高点。但游戏黑灰产规模也在迅速扩大&#xff0c;不少游戏饱受其侵扰&#xff0c;游戏厂商愈发重视游戏安全问题。 为帮助…...

进阶Docker4:网桥模式、主机模式与自定义网络

目录 网络相关 子网掩码 网关 规则 docke网络配置 bridge模式 host模式 创建自定义网络(自定义IP) 网络相关 IP 子网掩码 网关 DNS 端口号 子网掩码 互联网是由许多小型网络构成的&#xff0c;每个网络上都有许多主机&#xff0c;这样便构成了一个有层次的结构。 IP 地…...

Qt 状态机框架:The State Machine Framework (二)

传送门: Qt 状态机框架:The State Machine Framework (一) Qt 状态机框架:The State Machine Framework (二) 1、利用并行态避免态的组合爆炸 假设您想在单个状态机中对汽车的一组互斥属性进行建模。假设我们感兴趣的属性是干净与肮脏,以及移动与不移动。需要四个相互排斥的…...

【Redis】更改redis中的value值

今天继续进步一点点~~ 背景&#xff1a;今天有个前端的同事问我&#xff0c;能不能在Redis中他本人登录公众号的 sessionID 加上一列openID 于是我上网查了一堆在Redis里面的命令&#xff0c;以及不同的客户端怎么输入命令&#xff0c;但是后来问了下同事&#xff0c;他就给我…...

数据结构Java版(2)——栈Stack

一、概念 栈也是一种线性数据结构&#xff0c;最主要的特点是入栈顺序和出栈顺序是相反的&#xff0c;操作时只能从栈顶进行操作&#xff0c;在Java中给我们提供了一个泛型栈——Stack&#xff0c;其中最常用的方法有&#xff1a; void push(E):进栈E pop():退栈E peek():查看…...

tcpdump 用法

tcpdump 是一个用于捕获和分析网络数据包的命令行工具。它可以在网络上截取数据包&#xff0c;并以可读的格式输出&#xff0c;方便进行网络故障排除和协议分析 tcpdump -i interface # 指定网络接口&#xff1a; tcpdump host target_host # 过滤特定主机的流量 tcpdump port…...

JavaScript SEO:如何为搜索引擎优化 JS

什么是 JavaScript SEO&#xff1f; JavaScript SEO 是技术 SEO 的一部分&#xff0c;其重点是使使用 JavaScript 构建的网站更容易被搜索引擎抓取、呈现和索引。 常见任务包括以下内容&#xff1a; 优化通过 JavaScript 注入的内容正确实施懒加载遵循内部链接最佳实践预防、…...

深入探讨生产环境中秒杀接口并发量剧增、负载过高的情况该如何应对?

目录 引言 1. 实施限流措施 1.1 令牌桶算法&#xff1a; 1.2 漏桶算法&#xff1a; 1.3 使用限流框架&#xff1a; 2. 优化数据库操作 2.1. 索引优化 2.2. 批量操作减少交互次数&#xff1a; 2.3. 避免全表扫描&#xff1a; 2.4使用InnoDB引擎&#xff1a; 2.5优化事…...

C语言再学习 -- C语言搭建TCP服务器/客户端

TCP/UDP讲过~ 参看&#xff1a;UNIX再学习 – TCP/UDP 客户机/服务器 这里记录一下可用的TCP服务器和客户端代码。 参看&#xff1a;用C语言搭建TCP服务器/客户端 一、TCP服务器 #include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #inc…...

企业远程控制如何保障安全?向日葵“全流程安全远控闭环”解析

远程控制为企业带来的便利与业务上的赋能是显而易见的&#xff0c;但很多企业依然对广泛的使用远程控制持一个观望的态度&#xff0c;其中最主要的原因&#xff0c;就是安全。 由于远程控制的原理和特性&#xff0c;它天然地会成为一个企业信息安全敏感领域&#xff0c;企业在…...

为什么需要放行回源IP

为什么需要放行回源IP 网站以“独享模式”成功接入WAF后&#xff0c;所有网站访问请求将先经过独享引擎配置的ELB然后流转到独享引擎实例进行监控&#xff0c;经独享引擎实例过滤后再返回到源站服务器&#xff0c;流量经独享引擎实例返回源站的过程称为回源。在服务器看来&…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...