vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息

在这里插入图片描述

一、实现效果
  • 使用echarts实现省市地图绘制
  • 根据数据显示省下市的天气图标
  • 根据数据显示省下市的温度信息
二、实现方法
1、安装echarts插件
npm install echarts --save
2、获取省市json数据

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

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

3、本例中data 数据

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

  • 定义一个容器map
<template><div class="map" id="map"></div>
</template>
  • 导入插件及吉林省数据
import * as echarts from "echarts";
import jilin from "./json/jilin.json";
  • 准备天气图标图片,吉林省下所有市的天气数据

天气的图标你可以自行准备,本例仅做演示,只准备了9个图标,你可以准备更多更全的天气哦。

export default {data() {return {//天气图标图片weatherMap: {"qing": require('@/assets/tq__1.jpg'),"qingZhuanDuoyun": require('@/assets/tq__2.jpg'),"zhongyu": require('@/assets/tq__3.jpg'),"qingZhuanZhongyu": require('@/assets/tq__4.jpg'),"zhongxue": require('@/assets/tq__5.jpg'),"leidian": require('@/assets/tq__6.jpg'),"yin": require('@/assets/tq__7.jpg'),"daxue": require('@/assets/tq__8.jpg'),"qingZhuanYin": require('@/assets/tq__9.jpg'),},//吉林省下所有市的天气数据testData: [{name: '长春市',value: 'qing',min: '10',max: '20',weather: '晴'},{name: '吉林市',value: 'qingZhuanDuoyun',min: '11',max: '15',weather: '晴转多云'},{name: '通化市',value: 'zhongyu',min: '8',max: '12',weather: '中雨'},{name: '四平市',value: 'qingZhuanZhongyu',min: '9',max: '19',weather: '晴转中雨'},{name: '白山市',value: 'zhongxue',min: '-15',max: '-5',weather: '中雪'},{name: '辽源市',value: 'leidian',min: '13',max: '17',weather: '雷电'},{name: '白城市',value: 'yin',min: '4',max: '7',weather: '阴'},{name: '延边朝鲜族自治州',value: 'daxue',min: '-22',max: '-12',weather: '大雪'},{name: '松原市',value: 'qingZhuanYin',min: '10',max: '20',weather: '晴转多云'}]};},
}
4、自定义标签样式

主要是通过label里面的formatter和rich来自定义样式的,本例中的样式仅供参考,你可以自行定义自己想要的样式。

在 rich 里面,可以自定义富文本样式。利用富文本样式,可以在标签中做出非常丰富的效果。

label: {// 在文本中,可以对部分文本采用 rich 中定义样式。// 这里需要在文本中使用标记符号:// `{styleName|text content text content}` 标记样式名。// 注意,换行仍是使用 '\n'。formatter: ['{a|这段文本采用样式a}','{b|这段文本采用样式b}这段用默认样式{x|这段用样式x}'].join('\n'),rich: {a: {color: 'red',lineHeight: 10},b: {backgroundColor: {image: 'xxx/xxx.jpg'},height: 40},x: {fontSize: 18,fontFamily: 'Microsoft YaHei',borderColor: '#449933',borderRadius: 4},}
}

formatter介绍:

  • 标签内容格式器,支持字符串模板和回调函数两种形式,字符串模板与回调函数返回的字符串均支持用 \n 换行。
  • 字符串模板 模板变量有:{a}:系列名。{b}:数据名。{c}:数据值。
  • 回调函数格式:(params: Object|Array) => string。参数 params 是 formatter 需要的单个数据集。

rich属性说明:

  • color:文字的颜色。
  • backgroundColo:文字块背景色。可以使用颜色值,例如:‘#123234’, ‘red’, ‘rgba(0,23,11,0.3)’;也可以直接使用图片,当使用图片的时候,可以使用 width 或 height 指定高宽,也可以不指定自适应。
  • width:文字块的宽度。一般不用指定,不指定则自动是文字的宽度。
  • height:文字块的高度。一般不用指定,不指定则自动是文字的高度。
  • borderWidth:文字块边框宽度。
  • borderColor:文字块边框颜色。
  • borderRadius:文字块边框的圆角。
  • padding:文字块的内边距。padding: [3, 4, 5, 6]:表示 [上, 右, 下, 左] 的边距。padding: 4:表示 padding: [4, 4, 4, 4]。padding: [3, 4]:表示 padding: [3, 4, 3, 4]。
5、动态定义天气图片样式

根据接口数据,来定义不同天气的图标样式

const weatherMap = this.weatherMap
let tempData = this.testData
tempData.forEach(item => {item.weatherImg = weatherMap[item.value]rich[item.value] = {height: 26,width: 26,backgroundColor: {image: weatherMap[item.value]}}
})
6、设置标签样式

这里使用formatter回调函数的形式来定义标签的显示样式

label: {show: true,formatter: function (params) {return `{${params.data.value}|}  {min|${params.data.min}℃}  {max|${params.data.max}℃}\n{name|${params.name}}`},rich: rich
},
7、渲染吉林省地图

根据接口数据,显示地图

series: [{type: 'map',zoom: 1.2,map: 'jilin',data: tempData},
]
8、示例代码已上传,去顶部可下载

附全部代码

<template><div class="map" id="map"></div>
</template><script>
import * as echarts from "echarts";
import jilin from "./json/jilin.json";
export default {data() {return {weatherMap: {"qing": require('@/assets/tq__1.jpg'),"qingZhuanDuoyun": require('@/assets/tq__2.jpg'),"zhongyu": require('@/assets/tq__3.jpg'),"qingZhuanZhongyu": require('@/assets/tq__4.jpg'),"zhongxue": require('@/assets/tq__5.jpg'),"leidian": require('@/assets/tq__6.jpg'),"yin": require('@/assets/tq__7.jpg'),"daxue": require('@/assets/tq__8.jpg'),"qingZhuanYin": require('@/assets/tq__9.jpg'),},testData: [{name: '长春市',value: 'qing',min: '10',max: '20',weather: '晴'},{name: '吉林市',value: 'qingZhuanDuoyun',min: '11',max: '15',weather: '晴转多云'},{name: '通化市',value: 'zhongyu',min: '8',max: '12',weather: '中雨'},{name: '四平市',value: 'qingZhuanZhongyu',min: '9',max: '19',weather: '晴转中雨'},{name: '白山市',value: 'zhongxue',min: '-15',max: '-5',weather: '中雪'},{name: '辽源市',value: 'leidian',min: '13',max: '17',weather: '雷电'},{name: '白城市',value: 'yin',min: '4',max: '7',weather: '阴'},{name: '延边朝鲜族自治州',value: 'daxue',min: '-22',max: '-12',weather: '大雪'},{name: '松原市',value: 'qingZhuanYin',min: '10',max: '20',weather: '晴转多云'}]};},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)let rich = {max: {color: '#fff',backgroundColor: '#E6A23C',width: 44,height: 26,},min: {color: '#fff',backgroundColor: '#67C23A',width: 44,height: 26,},name: {color: '#F56C6C',height: 32},}const weatherMap = this.weatherMaplet tempData = this.testDatatempData.forEach(item => {item.weatherImg = weatherMap[item.value]rich[item.value] = {height: 26,width: 26,backgroundColor: {image: weatherMap[item.value]}}})var option = {series: [{type: 'map',zoom: 1.2,map: 'jilin',label: {show: true,formatter: function (params) {return `{${params.data.value}|}  {min|${params.data.min}℃}  {max|${params.data.max}℃}\n{name|${params.name}}`},rich: rich},data: tempData},]}myChart.setOption(option)},},
}
</script><style scoped>
.map {width: 800px;height: 600px;position: relative;
}
</style>
9、效果图

在这里插入图片描述

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

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

相关文章

记录华为云服务器(Linux 可视化 宝塔面板)-- Nginx配置出现403错误记录(四种情景)

文章目录 第一种、配置文件index指定文件找不到第二种、root配置问题第三种、文件操作权限第四种、防火墙问题 最近配置多页项目&#xff0c;需指定根目录为某个页面 配置nginx出现了403的情况 location / {# autoindex on;root AuditAndInspection/;index index.html;try_file…

简述Redis备份策略以及对应的实现机制

引言 Redis作为高性能的内存数据库&#xff0c;数据的安全性至关重要。一旦数据丢失&#xff0c;可能会对业务造成重大影响。因此&#xff0c;备份Redis数据是每个Redis使用者都必须考虑的问题。本文将介绍Redis的备份策略以及对应的实现机制。 一、备份策略 1.1 定期备份 …

easycython和cython将py编译为pyd对比

前提了解 为了实验的准确性&#xff0c;在全过程使用的python环境版本都为同一版本 easycython和cython编译为pyd文件的不同在于&#xff0c;easycython编译的原始文件后缀为pyx&#xff0c;cython编译的原始文件为py 1.cython 1.1原始文件 def ZWHCythonTest():print(&qu…

QT+OSG/osgEarth编译之六十三:bvh+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_bvh)

目录 1、bvh介绍 2、文件分析 3、pro文件 4、编译实践 1、bvh介绍 BVH(BioVision Hierarchy)是BioVision等设备对人体运动进行捕获后产生数据文件,它存储了角色的骨骼和肢体关节旋转数据。BVH是一种通用的人体特征动画文件格式,广泛地被当今流行的各种动画制作软件(如…

怎么用Facebook找客户?Facebook开发客户攻略分享

跨境人最了解的电商平台之一就是Facebook了&#xff0c;说到Facebook&#xff0c;它拥有超过20亿的活跃用户&#xff0c;所以你可以在这个平台上面找到更多的潜在客户。今天的文章就主要分享用Facebook开发客户的方法&#xff0c;全是干货&#xff0c;建议收藏&#xff01; 一、…

2024 年政府和技术预测

新的一年即将来临&#xff0c;这意味着专家、技术专家和专栏作家应该尝试预测 2024 年政府和技术即将出现的一些最大趋势。今年可能使这些预测变得更加困难的是事实上&#xff0c;许多技术正在以惊人的速度向前发展。在某些情况下&#xff0c;过去需要多年才能慢慢发生的变化现…

LLM之RAG实战(九)| 高级RAG 03:多文档RAG体系结构

在RAG&#xff08;检索和生成&#xff09;这样的框架内管理和处理多个文档有很大的挑战。关键不仅在于提取相关内容&#xff0c;还在于选择包含用户查询所寻求的信息的适当文档。基于用户查询对齐的多粒度特性&#xff0c;需要动态选择文档&#xff0c;本文将介绍结构化层次检索…

二维数组调整

前言 NWAFU 2021阶段二 B 一、题目描述 题目描述 编写Adjust_Arr函数&#xff0c;对动态二维数组中的每一行做数据位置调整。将偶数行(行号从0开始&#xff0c;并计作偶数行&#xff09;中最大元素与最前一个元素做交换&#xff0c;最小元素与最后一个元素做交换&#xff0c…

腾讯云轻量服务器和云服务器区别对比(超详细)

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…

数据挖掘 K-Means聚类

未格式化之前的代码&#xff1a; import pandas as pd#数据处理 from matplotlib import pyplot as plt#绘图 from sklearn.preprocessing import MinMaxScaler#归一化 from sklearn.cluster import KMeans#聚类 import os#处理文件os.environ["OMP_NUM_THREADS"] …

排序笔记总结

插入排序 直接插入排序 前i个元素是有序的&#xff0c;将第i1个元素逐个往前比较&#xff0c;比到比一个数大的就插入到这个数后面&#xff0c;即这个数后面的数到i个数全部往后移 例&#xff1a;DS内排—直插排序 题目描述 给定一组数据&#xff0c;使用直插排序完成数据的…

常用的测试工具有10类

常用的测试工具有10类&#xff1a; 1.测试管理工具 2.接口测试工具 3.性能测试工具 4.C/S自动化工具 5.白盒测试工具 6.代码扫描工具 7.持续集成工具 8.网络测试工具 9.app自动化工具 10.web安全测试工具 1.测试管理工具 1&#xff0c;TestDirector(大而全) 2&…

解释RestFUL API,以及如何使用它构建web程序

RESTful API&#xff08;Representational State Transfer&#xff09;是一种基于网络的软件架构风格&#xff0c;用于构建分布式系统。它利用 HTTP 协议中的各种方法&#xff08;如 GET、POST、PUT、DELETE&#xff09;来对资源进行操作&#xff0c;使得不同应用程序能够相互通…

git删除之前上传的

之前文件上传到github上了&#xff0c;但是现在又想要把它删除但是没有找到方法&#xff0c;在网上搜索了很久才找到个有用的。 删除文件 git rm filename git commit -m "删除"但是这时候git push发现没有效果。 之后还要&#xff1a; 清除缓存&#xff1a; gi…

设计模式-多例模式

设计模式专栏 模式介绍多例模式和单例模式的区别应用场景Spring中多例模式的优缺点代码示例Java实现多例模式Python实现多例模式 多例模式在spring中的应用 模式介绍 多例模式是一种创建型设计模式&#xff0c;属于对象创建类型。多例模式的特点是允许一个类有多个实例&#x…

西北大学844计算机类考研-25级初试高分总攻略

西北大学844计算机类考研-25级初试高分攻略 个人介绍 ​ 本人是西北大学22级软件工程研究生&#xff0c;考研专业课129分&#xff0c;过去一年里在各大辅导机构任职&#xff0c;辅导考研学生专业课844&#xff0c;辅导总时长达400小时&#xff0c;辅导学生超过20余人&#xf…

Android集成OpenSSL实现加解密-集成

导入so 将编译生成的 OpenSSL 动态库文件&#xff08;.so 文件&#xff09;复制到你的 Android 项目的 libs 目录中 导入头文件 将编译生成的include文件夹导入到项目中 build.gradle添加配置 defaultConfig {……testInstrumentationRunner "androidx.test.runner…

java对象整理

1.对象的创建过程 首先class文件加载到内存中 这个过程如下 “加载”是“类加载”(Class Loading)过程的第一步。这个加载过程主要就是靠类加载器实现的&#xff0c; 包括用户自定义类加载器。 加载到内存后做的事情 申请对象内存 成员变量赋默认值 调用构造方法 成员变量顺序…

前端实现断点续传文件

公司要求实现的功能&#xff0c;大概思路是将上传的文件通过jsZip压缩后&#xff0c;进行切片&#xff0c;留一下总切片&#xff0c;当前片&#xff0c;并把这些数据给后端&#xff0c;至于前端的校验&#xff0c;是由Md5完成的&#xff0c;验证文件唯一性&#xff0c;这样下次…

什么是受检异常和非受检异常 一、首先是异常的本质 二、然后是对受检异常和非受检异常的定义 三、最后我还可以说下他们优点和缺点) 受检异常优点有两个:

文章目录 什么是受检异常和非受检异常一、首先是异常的本质二、然后是对受检异常和非受检异常的定义三、最后我还可以说下他们优点和缺点&#xff09; 受检异常优点有两个&#xff1a; 什么是受检异常和非受检异常 可以从三个方面回答这个问题一、首先是异常的本质&#xff09…