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.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]
                    }
                }
            })

            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、效果图

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何用Python批量计算Word中的算式

一、问题的提出 到了期末&#xff0c;大家都在忙着写总结、改试卷、算工作量&#xff0c;写总结可以借助于ChatGPT&#xff0c;改试卷可以用星火的自动批阅功能&#xff0c;算工作量就是一项比较棘手的问题&#xff0c;因为它涉及很多算式&#xff0c;有时需要老师用计算器算来…

10TB海量JSON数据从OSS迁移至MaxCompute

前提条件 开通MaxCompute。 在DataWorks上完成创建业务流程&#xff0c;本例使用DataWorks简单模式。详情请参见创建业务流程。 将JSON文件重命名为后缀为.txt的文件&#xff0c;并上传至OSS。本文中OSS Bucket地域为华东2&#xff08;上海&#xff09;。示例文件如下。 {&qu…

每日一练(编程题-C/C++)

目录 CSDN每日一练1. 2023/2/27- 一维数组的最大子数组和(类型&#xff1a;数组 难度&#xff1a;中等)2. 2023/4/7 - 小艺照镜子(类型&#xff1a;字符串 难度&#xff1a;困难)3. 2023/4/14 - 最近的回文数(难度&#xff1a;中等)4. 2023/2/1-蛇形矩阵(难度&#xff1a;困难)…

算法基础之最短编辑距离

最短编辑距离 核心思想 &#xff1a; 线性dp 集合定义 &#xff1a; f[i][j]为操作方式的最小值 集合计算 : 三种操作 取最小 ① 删除 : 将a[i]删掉 使ab相同 –> f[i-1][j] 1 f[i][j]② 增添 : 在a[i]后加上一个数 使ab相同 –> f[i][j-1] 1 f[i][j]③ 替换 : 将a[…

基于ssm的航空票务推荐系统的设计与实现论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;航班信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广大…

基于Python的新闻爬取和推荐系统实践

基于Python的新闻爬取和推荐系统实践 项目概述数据集来源技术栈功能特点普通用户功能管理员功能需求 创新点 项目概述 在这个全功能的新闻爬取和推荐系统项目中&#xff0c;我们致力于构建一个高效、智能的平台&#xff0c;为用户提供个性化的新闻阅读体验。采用了Python语言&…

oracle执行不了update

oracle数据库select等其他语句执行正常&#xff0c;update语句执行后一直执行不完&#xff0c;原因是产生了记录锁。 &#xff08;1&#xff09;查询锁 SELECT a.sid, a.serial#,a.USERNAME,ao.OBJECT_NAME FROM v$locked_object lo, dba_objects ao, v$session a WHERE ao.o…

C语言易错知识点十(指针(the final))

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载&#xff0c;请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主&#xff0c;代码兴国&#xff01;❤❤❤ 许久不见&#xff0c;甚是想念&#xff0c;真的是时间时间&#xff0c;你慢些吧&#xff0c;不能再让头发变秃…

电子邮件地址填写指南:格式与常见问题解答

一个专业的电子邮件地址是一个你只用于工作目的的通信帐户。当你给收件人发送电子邮件时&#xff0c;这是他们最先看到的细节之一。无论你的职位或行业如何&#xff0c;拥有一个专业的电子邮件地址都可以提高你和所在公司的可信度。 在本文中我们解释了专业的电子邮件地址是什么…

PAT 乙级 1033 旧键盘打字

旧键盘上坏了几个键&#xff0c;于是在敲一段文字的时候&#xff0c;对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键&#xff0c;打出的结果文字会是怎样&#xff1f; 输入格式&#xff1a; 输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其…

使用Vue3开发学生管理系统模板1

环境搭建 通过解压之前《Vue3开发后台管理系统模板》的代码&#xff0c;我们能够得到用户增删改查的页面&#xff0c;我们基于用户增删改查的页面做进一步的优化。 创建学生增删改查页面 第一步&#xff1a;复制用户增删改查页面&#xff0c;重命名为StudentCRUD.vue <…

java图书管理系统

主要模块&#xff1a; 为用户开通借书服务增加图书信息登记图书借出信息 技术栈&#xff1a; JSPServletTomcat9.0IDEAMysql 前台登录验证使用框架 数据库脚本包括登录用户名和密码已经写在了数据库脚本.sql 中 解压“需要的jar包”添加到项目的dependency中 运行效果&a…

构建基于小红书笔记详情API的内容生态

随着互联网的发展&#xff0c;内容生态的构建已经成为了许多企业和个人的重要任务。小红书作为一家以内容分享为主的社交平台&#xff0c;其API的开放为开发者提供了一种全新的方式来获取用户生成内容&#xff08;UGC&#xff09;。本文将介绍如何从无到有地构建基于小红书笔记…

告别HTTP,拥抱HTTPS!免费SSL证书领取指南

为什么选择HTTPS&#xff1f; HTTP和HTTPS之间的主要区别在于安全性。HTTP是一种不安全的协议&#xff0c;数据在传输过程中是明文的&#xff0c;容易受到中间人攻击。而HTTPS通过SSL&#xff08;Secure Sockets Layer&#xff09;或TLS&#xff08;Transport Layer Security&…

zabbix通过自动发现-配置监控项、触发器(小白教程)

自动发现配置参考链接&#xff08;不小白&#xff0c;不友好&#xff09; zabbix-get介绍 1配置 zabbix server&#xff1a;版本7&#xff08;不影响&#xff09;,IP地址&#xff1a;192.168.0.60zabbix agent&#xff1a;版本agent1&#xff08;不影响&#xff09;&#xff…

【Graylog】通过Pipelines在Graylog生成IP地理位置信息

序 在当今数字化时代&#xff0c;随着网络攻击的不断增加和全球化的用户活动&#xff0c;了解IP地址的地理位置信息变得越来越重要。对于网络安全和营销策略来说&#xff0c;掌握IP地址的地理信息可以带来许多好处。 接下里将介绍如何通过Graylog的Pipelines功能&#xff0c;…

arkts中@Watch监听的使用

概述 Watch用于监听状态变量的变化&#xff0c;当状态变量变化时&#xff0c;Watch的回调方法将被调用。Watch在ArkUI框架内部判断数值有无更新使用的是严格相等&#xff08;&#xff09;&#xff0c;遵循严格相等规范。当在严格相等为false的情况下&#xff0c;就会触发Watch的…

【数据结构——图】图的最短路径(头歌习题)【合集】

目录 第1关&#xff1a;单源最短路径完整代码 第2关&#xff1a;多源最短路径输入格式:输出格式:完整代码 第1关&#xff1a;单源最短路径 给一个n(1 ≤ n ≤ 2500) 个点 m(1 ≤ m ≤ 6200) 条边的无向图&#xff0c;求 s 到 t 的最短路。 输入格式: 第一行四个由空格隔开的整…

计算机视觉工程师就业前景如何

计算机视觉主要涵盖了图像处理、模式识别等多个领域&#xff0c;可以应用到很多行业中。随着人工智能技术的快速发展&#xff0c;计算机视觉作为其中的重要分支之一&#xff0c;其就业前景非常广阔。 为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国…

AIGC重塑基础设施,高密数据中心为何众望所归?

凯文凯利在《必然》中认为&#xff0c;科技在本质上有所偏好&#xff0c;使得它朝往某种特定方向。 毫无疑问&#xff0c;进入到数字经济时代&#xff0c;人工智能技术飞速发展与加速应用之际&#xff0c;这个特定方向逐渐明朗&#xff1a;即算力科技&#xff0c;算力已经成为…