vue使用高德地图插件(手把手教你Vue+ECharts+高德地图API实现天气预报数据可视化)

前言

所谓数据可视化,我们可以理解为从宏观角度来看一眼就能看出来整个数据的占比,走向。对于数据可视化,很多互联网公司是很看重这一块的,包括大厂;就比如阿里的淘宝,双十一的时候往往就需要将消费者的一些数据通过图的形式展现出来。接下来我们就来实现一个天气的数据可视化(移动端开发),看如下效果图(iPhone6/7/8)。

准备工作

注册一个高德地图API账号,选择开发支持,地图 JS API。登录控制台成为开发者并创建 key。进入安全密钥使用说明,找到方式二。创建一个vue项目,将vue的一些默认组件和样式删除,在views下新建一个Index.vue,并且在index.js下配置路由。目录结构如下所【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.示:通过npm install echarts –save安装一个依赖,这样就可以使用echarts了。

开始(细分11步)

将准备工作第三步找到的方式二的两个<script>引入到index.html中,将你自己申请的key值和安全密钥粘贴到里面去。这样就可以使用高德地图 JS API 开发地图应用。设置头部样式和背景色,时间和切换城市用到了弹性布局。ini复制代码 //html <div class=“container”> <div class=“nav”> <div class=“time”>7:41</div> <div class=“city”>切换城市</div> </div> <div> css复制代码【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.//css .container { min-height: 100vh; background: #000; opacity: 0.7; color: #fff; } .nav { display: flex; justify-content: space-between; padding: 10px; } 设置我们需要的天气数据展示的html+css结构,这主要考查的是切页面能力。javascript复制代码 //html <div class=“city-info”> <p class=“city”>{{}}</p> <p class=“weather”>{{}}</p> <h2 class=“temp”> <em【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.></em></h2> <div class=“detail”> <span>风力:{{ }}</span>| <span>风向:{{ }}</span>| <span>空气湿度:{{ }}</span> </div> </div> <div class=“future”> <div class=“group” v-if=“futureData.length > 0”> 明天: <span class=“tm”>白天:{{ }}℃ {{ }} {{ }}风 {{ }} </span> <span class=“tm”> 夜间:{{ }}℃ {{ }} {{ }}风 {{ }} </span> </div> <div class=“gro【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.up” v-if=“futureData.length > 0”> 后天: <span class=“tm”>白天:{{ }}℃ {{ }} {{ }}风 {{ }} </span> <span class=“tm”> 夜间:{{ }}℃ {{ }} {{ }}风 {{ }} </span> </div> </div> css复制代码//css .city-info { text-align: center; .temp { font-size: 26px; em { font-size: 34px; font-style: normal; } } } .future { padding: 0 10px; margin-top:【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.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 用于存放折线图。arduino复制代码//html <div class=“echart-container”> </div> css复制代码//css .echart-container { width: 100%; height: 50vh; } 用watchEf【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.fect或onMounted来获取天气数据。想要获取天气情况我们先要获得定位,这是需要用到高德地图API,我们来到这个位置:开发 > 地图 JS API v2.0 > 教程 > 服务 > 定位,找到IP定位获取当前城市信息。

将这段代码复制到onMounted的回调函数中,这样我们就能获取到定位信息。

接下来就可以来获取天气了,我们把获取天气封装成一个函数getWeather。同样的我们来到:开发 > 地图 JS API v2.0 > 教程 > 服务 > 天气,找到实时天气查询。

把上图中的代码复制到获取天气的函数中,并将它放在获取定位成功后执行,传入定位的城市,这样就可以获得定位的城市的天气情况了【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.

同样的,我们来获取未来几天的天气情况,通过下面的代码就可以获取到。javascript复制代码weather.getForecast(cityName, function(err, data) { console.log(err, data); });

注意:此时输出的未来天气是一个数组。

我们已经获取到了天气数据了,接下来就要把这些数据存起来,把它变成响应式的,然后把它放到页面上展示出来。ini复制代码 const state = reactive({ today: {}, futureData: [], }) state.today = datastate.future【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.Data =data.forecasts return { …toRefs(state), }

把数据放到页面上我理解的是挖坑然后埋数据,就像下面这样:

ini复制代码 <p class=“city”>{{ today.city }}</p> <p class=“weather”>{{ today.weather }}</p>

注意:由于futureData是一个数组,我们要在它放数据的div上加一个v-if=”futureData.length > 0″,要不然会报错。

css复制代码<div class=“group” v-if=“futureData.length > 0”> 【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业. 明天: <spanclass=“tm”>白天:{{ futureData[1].dayTemp }}℃ {{ futureData[1].dayWeather}} {{ futureData[1].dayWindDir }}风 {{ futureData[1].dayWindPower }} </span> <span class=“tm”> 夜间:{{ futureData[1].nightTemp }}℃ {{ futureData[1].nightWeather }} {{ futureData[1].nightWindDir }}风 {{ futureData[1]【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业..nightWindPower }} </span> </div> 接下来我们就来做一个折线图了,打开ECharts官网,选一个折线图Examples – Apache ECharts

定义一个方法initEchart来完成图的绘制(这里定义了一个空数组来获取未来几天的温度)

kotlin复制代码 const tempArr = ref([]) data.forecasts.forEach(item => { tempArr.value.push(item.dayTemp) }) const echartContainer = ref(null) constin【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.itEchart =() => { 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: lin【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.e } ] }; myChat.setOption(option) } return { echartContainer }

别忘了在装这幅图的div上挂一个ref=”echartContainer”哟。

这样就能帮我们初始化一个折线图了。

最后直接在获取未来天气中调用initEchart就可以了。

部分代码

xml复制代码<script> import { toRefs, watchEffect, reactive, ref, onMounted } from vue; import * as echarts from echarts; export default{ 【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业. 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【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业..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(); //执行实时天气信【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.息查询 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(i【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.tem.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 }, s【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.eries: [ { data: tempArr.value, type: line } ] }; myChat.setOption(option) } return { …toRefs(state), echartContainer } } } </script>

结语

ECharts中的一些图表是很好用的,我们可以自己动手多去尝试尝试。未来的学习之旅还很长,对于数据的可视化我们还可以做成3D的效果。本文如有错失,欢迎大家指正,最后感谢大家的观看,【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.点个免费的赞吧❤️。

作者:一拾九

链接:

https://juejin.cn/post/7230078695767294013

推荐阅读

给力项目线报网会员可免费下载 加入会员
友情提醒: 请尽量登录购买,防止付款了不发货!
QQ交流群:226333560 站长微信:qgzmt2
温馨提示:本站提供的一切软件、教程和内容信息都来自网络收集整理,仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,版权争议与本站无关。用户必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

给TA打赏
共{{data.count}}人
人已打赏
行业资讯

自制捕鱼船视频(南太平洋岛民:自制渔具在海上捕飞鱼,1小时就捕到100条)

2024-5-6 13:42:35

行业资讯

壁纸无水印风景(极好看120张高清无水印壁纸+你们要的壁纸)

2024-5-6 14:03:56

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索