城市天气查询系统 (City Weather Dashboard)

🌦️ 城市天气查询系统 (City Weather Dashboard)

这是一个基于 Vue.js 3 构建的现代化天气查询 Web 应用。它集成了数据可视化图表和交互式地图,能够为用户提供直观、详细的城市天气信息,包括当前天气、未来 7 天预报、温度走势图以及地理位置展示。

本代码已经部署在网页可直接访问

部署在 netlify 免费服务器上,有时候比较卡

base 复制代码
https://weatherforecastfromnoterai.netlify.app/

本前端软件天气图标来源

✨ 主要功能

  • 🔍 城市搜索: 支持输入城市名称(支持中文拼音或英文)进行全球城市搜索。
  • 🌡️ 实时天气: 显示查询城市的当前温度、天气状况及对应的天气代码。
  • 📅 7 天预报卡片: 以卡片形式直观展示未来一周的天气图标、天气描述及最高/最低气温。
  • 📈 温度趋势图 : 使用 ECharts 绘制平滑折线图,展示未来一周的最高温和最低温走势。
  • 🗺️ 交互式地图 : 使用 Leaflet 自动定位到查询城市,支持缩放、平移,并提供多种地图图层切换(街道图、卫星图、地形图等)。
  • 📱 响应式布局: 界面整洁,利用 Flexbox 布局适配不同屏幕区域。

🛠️ 技术栈

本项目纯前端实现,无需后端服务,依赖以下开源库和 API:

核心框架与库

  • HTML5 / CSS3: 页面结构与样式布局。
  • Vue.js 3 (CDN): 用于处理数据绑定、DOM 更新及应用逻辑。
  • ECharts 5 (CDN): 用于绘制交互式温度折线图。
  • Leaflet.js (CDN): 用于加载地图瓦片和进行地理定位。




数据源 API

  1. OpenWeatherMap Geo API : 用于将城市名称转换为经纬度坐标。
JavaScript 复制代码
// API密钥
const apiKey = "";
  1. Open-Meteo API : 用于获取详细的气象数据(无需 API Key)。
  2. Weather Icons : 使用 bmcdn.nl 提供的 SVG 天气图标。图标来源

📂 文件结构说明

Plaintext

Project_Root/

├── index.html # 项目入口文件,包含 HTML 结构和库的引入

├── style.css # 全局样式文件,定义 Flex 布局和组件样式

├── app.js # 核心逻辑文件,包含 Vue 实例、API 请求和地图逻辑

├── WeatherWeek.js # 负责渲染未来 7 天天气卡片的逻辑

└── T_Curve.js # 负责初始化和更新 ECharts 温度折线图的逻辑

🚀 快速开始

1. 克隆或下载项目

将所有文件下载到本地同一个文件夹中。

2. 配置 API Key (可选但推荐)

在 app.js 文件顶部,默认提供了一个 OpenWeatherMap 的测试 Key。为了保证稳定性,建议替换为您自己的 Key:

JavaScript

// app.js 第 4 行

const apiKey = "YOUR_OPENWEATHERMAP_API_KEY";

3. 运行项目

由于使用了 ES6 模块和部分跨域资源,建议使用本地服务器运行,而不是直接双击打开 HTML 文件。

方法 A:使用 VS Code Live Server 插件(推荐)

  1. 在 VS Code 中打开项目文件夹。
  2. 右键点击 index.html。
  3. 选择 "Open with Live Server"。

方法 B:使用 Python

在项目目录下打开终端,运行:

Bash

Python 3

python -m http.server 8000

然后在浏览器访问 http://localhost:8000

📖 使用指南

https://github.com/user-attachments/assets/23b3f391-356d-41d1-82ee-a6b4b9d7921d

  1. 输入城市: 在页面左上角的输入框中输入城市名称(例如:"Beijing", "London", "Shanghai")。
  2. 点击查询: 点击"查询天气"按钮。
  3. 查看结果 :
    • 左上区域: 显示正在查询的状态以及查询成功后的当前简要天气。
    • 右上区域: 显示未来一周的文字版摘要。
    • 中间横排: 显示 7 张精美的天气卡片。
    • 左下区域: 查看未来一周的温度变化曲线。
    • 右下区域: 地图自动飞往该城市。你可以点击地图右上角的图层控制器切换"卫星图"或"地形图"。

🧩 代码模块详解

app.js

  • 初始化 Vue 应用。
  • getWeather(): 处理用户输入,调用 Geo API 获取经纬度。
  • getWeatherOfCity(): 根据经纬度调用 Open-Meteo 获取气象数据。
  • getWeatherCode(): 一个巨大的 switch 函数,将 WMO 天气代码转换为中文描述和 Emoji。
  • map: Leaflet 地图的初始化、图层控制和 flyTo 动画逻辑。

T_Curve.js

  • 使用 ECharts 初始化图表实例。
  • updateChart(data): 接收 API 数据,解析最高/最低气温,并配置图表的渐变色样式和 Tooltip。

WeatherWeek.js

  • WeatherWeek(data): 处理每日天气数据。
  • getWeatherIcon(code): 根据天气代码返回对应的 SVG 图标 URL。
  • updateWeatherCard(...): 动态更新 DOM 中的卡片 HTML 内容。

网站预览

本代码已经部署在网页可直接访问

base 复制代码
https://weatherforecastfromnoterai.netlify.app/

源码共享

github网站分享


gitee网站分享

相关推荐
麦麦大数据1 天前
J009 美食推荐可视化大数据系统vue+springboot
vue.js·spring boot·mysql·推荐算法·美食·可视化分析·沙箱支付
rfidunion1 天前
springboot+VUE+部署(1。新建项目)
java·vue.js·spring boot
wuk9981 天前
梁非线性动力学方程MATLAB编程实现
前端·javascript·matlab
Irene19911 天前
在 Vue 中使用 TypeScript 的几种方式
vue.js·typescript
XiaoYu20021 天前
第11章 LangChain
前端·javascript·langchain
hhcccchh1 天前
学习vue第八天 Vue3 模板语法和内置指令 - 简单入门
前端·vue.js·学习
yyf198905251 天前
Vue 框架相关中文文献
前端·javascript·vue.js
粥里有勺糖1 天前
开发一个美观的 VitePress 图片预览插件
前端·vue.js·vitepress
行者961 天前
Flutter适配OpenHarmony:国际化i18n实现中的常见陷阱与解决方案
开发语言·javascript·flutter·harmonyos·鸿蒙
我的写法有点潮1 天前
推荐几个国外比较流行的UI库(上)
前端·javascript·css