所谓数据可视化,我们可以理解为从宏观角度来看一眼就能看出来整个数据的占比,走向。对于数据可视化,很多互联网公司是很看重这一块的,包括大厂;就比如阿里的淘宝,双十一的时候往往就需要将消费者的一些数据通过图的形式展现出来。接下来我们就来实现一个天气的数据可视化(移动端开发),看如下效果图(iPhone6/7/8)。
(资料图片)
API
账号,选择开发支持,地图 JS API
。key
。vue
项目,将vue
的一些默认组件和样式删除,在views
下新建一个Index.vue
,并且在index.js
下配置路由。目录结构如下所示:npm install echarts --save
安装一个依赖,这样就可以使用echarts
了。将准备工作第三步找到的方式二的两个<script>
引入到index.html
中,将你自己申请的key
值和安全密钥粘贴到里面去。这样就可以使用高德地图 JS API
开发地图应用。
设置头部样式和背景色,时间和切换城市用到了弹性布局。
//html//css .container { min-height: 100vh; background: #000; opacity: 0.7; color: #fff;}.nav { display: flex; justify-content: space-between; padding: 10px;}
- 设置我们需要的天气数据展示的
html+css
结构,这主要考查的是切页面能力。//html{{}}
{{}}
℃
风力:{{ }}| 风向:{{ }}| 空气湿度:{{ }}明天: 白天:{{ }}℃ {{ }} {{ }}风 {{ }} 夜间:{{ }}℃ {{ }} {{ }}风 {{ }}后天: 白天:{{ }}℃ {{ }} {{ }}风 {{ }} 夜间:{{ }}℃ {{ }} {{ }}风 {{ }}//css.city-info { text-align: center; .temp { font-size: 26px; em { font-size: 34px; font-style: normal; } }}.future { padding: 0 10px; margin-top: 30px; .group { height: 44px; line-height: 44px; background: rgba(255, 255, 255, 0.3); margin-bottom: 10px; padding: 0 10px; font-size: 13px; border-radius: 5px; }}
- 再放一个
div
用于存放折线图。//html//css.echart-container { width: 100%; height: 50vh;}
用
watchEffect
或onMounted
来获取天气数据。想要获取天气情况我们先要获得定位,这是需要用到高德地图
API
,我们来到这个位置:开发>地图 JS API v2.0>教程>服务>定位
,找到IP
定位获取当前城市信息。将这段代码复制到
onMounted
的回调函数中,这样我们就能获取到定位信息。
- 接下来就可以来获取天气了,我们把获取天气封装成一个函数
getWeather
。同样的我们来到:开发>地图 JS API v2.0>教程>服务>天气
,找到实时天气查询。把上图中的代码复制到获取天气的函数中,并将它放在获取定位成功后执行,传入定位的城市,这样就可以获得定位的城市的天气情况了。
- 同样的,我们来获取未来几天的天气情况,通过下面的代码就可以获取到。
weather.getForecast("cityName", function(err, data) {console.log(err, data); });注意:此时输出的未来天气是一个数组。
- 我们已经获取到了天气数据了,接下来就要把这些数据存起来,把它变成响应式的,然后把它放到页面上展示出来。
const state = reactive({ today: {}, futureData: [], }) state.today = data state.futureData = data.forecasts return { ...toRefs(state), }把数据放到页面上我理解的是挖坑然后埋数据,就像下面这样:
{{ today.city }}
{{ today.weather }}
注意:由于
futureData
是一个数组,我们要在它放数据的div
上加一个v-if="futureData.length > 0"
,要不然会报错。明天:白天:{{ futureData[1].dayTemp }}℃ {{ futureData[1].dayWeather}} {{ futureData[1].dayWindDir }}风 {{ futureData[1].dayWindPower }} 夜间:{{ futureData[1].nightTemp }}℃ {{ futureData[1].nightWeather }} {{ futureData[1].nightWindDir }}风 {{ futureData[1].nightWindPower}}
- 接下来我们就来做一个折线图了,打开
ECharts
官网,选一个折线图Examples - Apache ECharts定义一个方法
initEchart
来完成图的绘制(这里定义了一个空数组来获取未来几天的温度)const tempArr = ref([]) data.forecasts.forEach(item => { tempArr.value.push(item.dayTemp) }) const echartContainer = ref(null) const initEchart = () => { const myChat = echarts.init(echartContainer.value); let option = { xAxis: { type: "category", data: ["今天", "明天", "后天", "大后天"], lineStyle: { color: "#fff" }, axisTick: { show: false }, }, yAxis: { type: "value", show: false }, series: [ { data: tempArr.value, type: "line" } ] }; myChat.setOption(option) } return { echartContainer }别忘了在装这幅图的
div
上挂一个ref="echartContainer"
哟。这样就能帮我们初始化一个折线图了。
- 最后直接在获取未来天气中调用
initEchart
就可以了。部分代码
<script>import { toRefs, watchEffect, reactive, ref, onMounted } from "vue";import * as echarts from "echarts";export default { setup() { const echartContainer = ref(null) const state = reactive({ today: {}, futureData: [], }) const tempArr = ref([]) onMounted(() => { //1.获取定位 AMap.plugin("AMap.CitySearch", function () { var citySearch = new AMap.CitySearch() citySearch.getLocalCity(function (status, result) { // console.log(status); if (status === "complete" && result.info === "OK") { // 查询成功,result即为当前所在城市信息 //console.log(result.city); getWeather(result.city) } }) }) }) const getWeather = (cityName) => { //加载天气查询插件 AMap.plugin("AMap.Weather", function () { //创建天气查询实例 var weather = new AMap.Weather(); //执行实时天气信息查询 weather.getLive(cityName, function (err, data) { console.log(err, data); state.today = data }); //未来的天气 weather.getForecast(cityName, function (err, data) { console.log(err, data); state.futureData = data.forecasts data.forecasts.forEach(item => { tempArr.value.push(item.dayTemp) }) initEchart() }); }); } const initEchart = () => { const myChat = echarts.init(echartContainer.value); let option = { xAxis: { type: "category", data: ["今天", "明天", "后天", "大后天"], lineStyle: { color: "#fff" }, axisTick: { show: false }, }, yAxis: { type: "value", show: false }, series: [ { data: tempArr.value, type: "line" } ] }; myChat.setOption(option) } return { ...toRefs(state), echartContainer } }}</script>本文转载于:
https://juejin.cn/post/7230078695767294013
如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。
标签:
记录--手把手教你Vue+ECharts+高德地图API实现天气预报数据可视化_今日热讯
2023-06-03奥尼尔转发有趣事实:热火队史夺得的三冠 都输掉了总决赛G1
2023-06-03再见姆巴佩!皇马酝酿王炸签约,赛季独造37球,巴萨曼城嗅到不安|快看点
2023-06-03京津冀签署协议推进交通基础设施互联互通
2023-06-03正规保安公司招聘(正规保安公司) 世界观天下
2023-06-03戈登:若夺冠八九十岁时可以跟儿孙吹嘘,曾经防死杜詹巴特勒
2023-06-03中金普洛斯REIT成功完成定向募集 REITs扩募迈出关键一步
2023-06-03守护城市“烟火气”,金山公安制定“一夜市一预案”|全球快消息
2023-06-03辞旧迎新过年啦谱子(辞旧迎新过年啦什么歌)
2023-06-03环球热推荐:文学写作基础(十六):调动积累,补充生发
2023-06-03美债务上限法案将于6月3日签署 道指狂飙700点 惠誉维持美国信用评级在负面观察状态_世界新动态
2023-06-03第22届上海市社会科学普及周讲座在华东理工大学举办|天天动态
2023-06-03暴涨292%!金桥信息实控人突然宣布:减持!什么情况?
2023-06-03温柔书写方法有哪些古诗 古诗正确书写格式-当前报道
2023-06-03【世界热闻】安卓怎么刷机_安卓手机如何刷机
2023-06-03同程旅行发布儿童节亲子游数据:主题公园霸榜,演出展览涨幅高|信息
2023-06-03观热点:蹲久了脚麻是怎么回事如何应急治疗_蹲久了脚麻怎么回事
2023-06-03卵磷脂胶囊
2023-06-03中考必备记叙文万能名人事例
2023-06-03官宣!知名百亿基金经理加盟 当前快播
2023-06-03维护高考公平公正!教育部公布2023年高考举报电话
2023-06-03工业富联股东大会直击:会场人员爆满 高管透露已着手开发下一代AI服务器_每日资讯
2023-06-03网传"女博士介入导师婚姻",男方代其发高水平论文,四川官方回应
2023-06-02巴拉克建议拜仁引入阿尔瓦雷斯、芒特:这事儿不靠谱,名宿勿多言
2023-06-02环球微资讯!山鹰国际控股股东泰盛实业质押800万股用于非融资类质押
2023-06-02A股市场反弹!北向资金单日净买入逾85亿,创近4个月新高
2023-06-02天津养老金调整方案更新了吗?2022~2023年天津养老金调整方案细则最新消息(全文)|天天热讯
2023-06-02持中国驾照怎样出境自驾游?飞猪联合租租车免费送10万份国际认证驾照翻译件
2023-06-02新华指数:秭归夏橙新鲜上市 伦晚脐橙产地走货量显著增加 天天观速讯
2023-06-02振江股份于南昌参设锂电科技公司,经营范围含电池制造|天天短讯
2023-06-02【全球报资讯】“网红”玩具有何安全隐患?市场监管总局将安全科普课堂带进校园
2023-06-02宛虹桥6,8号民居
2023-06-02今日看点:扑克魔术教程简单互动_扑克魔术教程
2023-06-02大兴七中分校贴吧_大兴七中分校-全球观热点
2023-06-02面对“儿歌成人化”我们能做什么?
2023-06-02头条焦点:算力还是不够!OpenAI 自曝发展受到 GPU 限制
2023-06-02恒指夜期收盘(6.2)︱恒生指数夜期(6月)收报18480点 高水263点
2023-06-02【环球快播报】神经母细胞瘤形成原因分析 神经母细胞瘤形成原因
2023-06-02韩媒:韩防长重申不会向乌提供杀伤性武器-天天视点
2023-06-02多彩“六一” 快乐节日
2023-06-02【环球速看料】三超新材6月2日快速回调
2023-06-02呼和浩特市鸿博网络科技有限公司_呼和浩特市大旗网络有限公司_环球精选
2023-06-02天天快消息!恶的拼音和组词_恶的拼音和组词造句
2023-06-02每日机构分析:6月1日_全球看热讯
2023-06-02李连杰游戏代言来者不拒,难道巨星也缺钱了?这样玩人设恐会翻车
2023-06-02被誉为石雕艺术之乡的是哪个城市_被誉为石雕艺术之乡的是哪里 每日观察
2023-06-02苏州工艺美术职业技术学院在哪_苏州工艺美术职业技术学院有多大 热门看点
2023-06-0272岁张纪中又要当爹了?小31岁爱妻小腹隆起,身材丰满满脸笑容
2023-06-02栀子金花丸副作用及禁忌_栀子金花丸副作用_当前报道
2023-06-02可转债发行是利好吗?(可转债发行是什么意思)
2023-06-02