一鍵掌握天氣動態 - 基于Vue和高德API的實時天氣查詢

前言

本文將學習如何使用Vue.js快速搭建天氣預報界面,了解如何調用高德地圖API獲取所需的天氣數據,并掌握如何將兩者有機結合,實現一個功能豐富、體驗出色的天氣預報應用

無論您是前端新手還是有一定經驗,相信這篇教程都能為您帶來收獲。讓我們一起開始這段精彩的Vue.js + 高德API之旅吧!

效果展示

實時效果展示

動畫.gif

可以查看最近幾天的天氣

高德API

要實現實時天氣的獲取,我們需要用到高德地圖的API服務

首先來到高德開放平臺

image.png

來到JS API服務

image.png

首先需要獲取JS API 安全密鑰,將它引入項目中

image.png

<div id="container"></div>
<script type="text/javascript">window._AMapSecurityConfig = {serviceHost: "你的代理服務器域名或地址/_AMapService",//例如 :serviceHost:'http://1.1.1.1:80/_AMapService',};
</script>
<scripttype="text/javascript"src="https://webapi.amap.com/maps?v=2.0&key=你申請的key值"
></script>
<script type="text/javascript">//地圖初始化應該在地圖容器div已經添加到DOM樹之后var map = new AMap.Map("container", {zoom: 12,});
</script>

接下來我們可以看到這里的天氣服務

image.png

這里的服務是通過城市名稱、區域編碼(如杭州市、330100),查詢目標城市、區域的實時天氣狀況。

也就是說我們需要獲取到天氣數據之前的獲取到當前的位置

image.png

//加載天氣查詢插件
AMap.plugin("AMap.Weather", function () {//創建天氣查詢實例var weather = new AMap.Weather();//執行實時天氣信息查詢weather.getLive("杭州市", function (err, data) {console.log(err, data);//err 正確時返回 null//data 返回實時天氣數據,返回數據見下表});
});

不難發現這里還有一個位置的服務

image.png

有三種定位方式可選擇

image.png

我們使用IP定位獲取當前城市信息

image.png

接下來我們就要開始在我們的項目中使用了

在index.js中全局引入高德的服務

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><link rel="icon" href="/favicon.ico" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Vite App</title><script type="text/javascript">window._AMapSecurityConfig = {securityJsCode: "你的代理服務器域名或地址/_AMapService",};</script><scripttype="text/javascript"src="https://webapi.amap.com/maps?v=2.0&key=你申請的key值"></script></head><body><div id="app"></div><script type="module" src="/src/main.js"></script></body>
</html>

創建一個Home.vue

image.png

構建獲取天氣的方法

這個方法可以獲取到今天的天氣

const getWeather = (city) => {//加載天氣查詢插件AMap.plugin("AMap.Weather", function () {//創建天氣查詢實例var weather = new AMap.Weather();//執行實時天氣信息查詢weather.getLive(city, function (err, data) {console.log(err, data);state.value = data;console.log(state.value);//err 正確時返回 null//data 返回實時天氣數據,返回數據見下表});});
};

這個方法可以獲取到明天、后天的天氣

const getWeather2 = (city) => {AMap.plugin("AMap.Weather", function () {//創建天氣查詢實例var weather = new AMap.Weather();//執行實時天氣信息查詢weather.getForecast(city, function (err, data) {console.log(err, data);//err 正確時返回 null//data 返回天氣預報數據,返回數據見下表forecasts.value = data.forecasts;console.log(forecasts.value);});});
};

在獲取到位置后調用獲取天氣的方法

() => {AMap.plugin("AMap.CitySearch", function () {var citySearch = new AMap.CitySearch();citySearch.getLocalCity(function (status, result) {if (status === "complete" && result.info === "OK") {// 查詢成功,result即為當前所在城市信息console.log(result);getWeather(result.city);getWeather2(result.city);}});});
});

之后便是將數據渲染到頁面即可

<div class="container"><div class="nav"><div class="time">{{ now }}</div><div class="city">切換城市</div></div><div class="city-info"><p class="city">{{ state.city }}</p><p class="weather">{{ state.weather }}</p><h2 class="temp"><em>{{ state.temperature }}</em></h2><div class="detail"><span> 風力:四級 </span> | <span> 風向:西北風 </span> |<span> 空氣濕度:98% </span></div></div><div class="future" v-if="forecasts.length"><div class="group">明天:<span class="tm">白天:{{ forecasts[1].dayTemp }}{{ forecasts[1].dayWeather }}{{ forecasts[1].dayWindDir }} {{ forecasts[1].dayWindPower }}</span>明天:<span class="tm">夜間:{{ forecasts[1].nightTemp }}{{ forecasts[1].nightWeather }}{{ forecasts[1].nightWindDir }}{{ forecasts[1].nightWindPower }}</span></div><div class="group">后天:<span class="tm">白天:{{ forecasts[2].dayTemp }}{{ forecasts[2].dayWeather }}{{ forecasts[2].dayWindDir }} {{ forecasts[2].dayWindPower }}</span>后天:<span class="tm">夜間:{{ forecasts[2].nightTemp }}{{ forecasts[2].nightWeather }}{{ forecasts[2].nightWindDir }}{{ forecasts[2].nightWindPower }}</span></div></div></div>

最終我們就能實現一個天氣預報的效果了

我們使用IP定位獲取當前城市信息的原因是因為天氣預報不需要那么精準的位置

官方也介紹了

如果不需要獲取精確的位置,只需要城市級別的定位信息,推薦使用AMap.CitySearch插件,AMap.CitySearch插件獲取所在城市相比通過瀏覽器定位的方式也更快捷。

所以我們采取了這種方式

總結

通過本文的學習,我們成功利用Vue.js和高德地圖API開發了一個實時天氣預報應用

通過這個案例,我們不僅掌握了如何在Vue.js中集成高德地圖API,還學會了如何使用Vue.js提供的各種功能和特性來增強應用的交互性和用戶體驗

希望讀者在學習的過程中有所收獲!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43115.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43115.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43115.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

桌面懸浮備忘錄哪個好?能在桌面懸浮使用的備忘app

備忘錄是我們日常工作和生活中的常用工具&#xff0c;它幫助我們記錄重要信息&#xff0c;提醒我們完成各項任務。而將備忘錄懸浮在桌面上使用&#xff0c;無疑能進一步提高我們的工作效率。想象一下&#xff0c;在處理復雜的工作任務時&#xff0c;你能夠隨時在桌面上查看提醒…

C++原創娛樂系列抽搐的井號

玩法&#xff1a; 一次性輸入大量w&#xff0c;s&#xff0c;a&#xff0c;d&#xff0c;然后即可欣賞抽搐的井號 上代碼 #include"bits/stdc.h" #include"Windows.h" using namespace std; int main(){int w10,a10;char n;while(1){for(int i0;i<w;…

JS獲取本機ip地址方法

前端獲取本機ip地址&#xff1b;使用第三方免費API <script>function ipJson(ipJson) {console.log(獲取到的網絡IP,ipJson);//可以把結果存在window上&#xff0c;方便調用window.ipJson ipJson;} </script> <script src"https://whois.pconline.com.cn/…

產品使用手冊深度剖析:五步快速敲定產品手冊策劃思路

引言 在這個信息爆炸的時代&#xff0c;產品使用手冊不僅是產品的“說明書”&#xff0c;更是品牌與用戶之間建立情感連接的橋梁。一份優秀的手冊&#xff0c;能夠迅速吸引用戶的注意力&#xff0c;引導他們輕松上手&#xff0c;并深入體驗產品的魅力。那么&#xff0c;如何撰…

ruoyi項目swagger文檔升級knife4j文檔

注釋admin模塊中的swagger依賴加入knife4j依賴 <!-- swagger3--> <!-- <dependency>--> <!-- <groupId>io.springfox</groupId>--> <!-- <artifactId>springfox-boot-starter</artifactId>--…

IDEA常用技巧薈萃:精通開發利器的藝術

1 概述 在現代軟件開發的快節奏環境中&#xff0c;掌握一款高效且功能全面的集成開發環境&#xff08;IDE&#xff09;是提升個人和團隊生產力的關鍵。IntelliJ IDEA&#xff0c;作為Java開發者的首選工具之一&#xff0c;不僅提供了豐富的編碼輔助功能&#xff0c;還擁有高度…

flowable框架 6.8 自定義函數方法

為了比對流程中條件的checkbox&#xff0c;由于本身elui的checkbox是亂序的&#xff0c;所以需要這個自定義函數來判斷 環境&#xff1a;jdk1.8 flowable6.8 springboot2 1.自定義函數 import org.springframework.stereotype.Component;import java.util.Arrays; import ja…

預算有限?如何挑選經濟適用的安全管理系統?

如今&#xff0c;無論是信息安全、生產安全還是人員安全&#xff0c;都直接關系到企業的穩定運營和長遠發展。然而&#xff0c;對于許多中小企業而言&#xff0c;高昂的安全管理系統投入往往成為一大難題。那么&#xff0c;在預算有限的情況下&#xff0c;如何挑選一款既經濟適…

Github 2024-07-07php開源項目日報 Top9

根據Github Trendings的統計,今日(2024-07-07統計)共有9個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量PHP項目9Blade項目2JavaScript項目1Laravel:表達力和優雅的 Web 應用程序框架 創建周期:4631 天開發語言:PHP, BladeStar數量:75969 個Fork數…

如何整合生成的人工智能?(GenAI)為你未來的工作增加動力

生成人工智能(GenAI)它發展迅速&#xff0c;以前所未有的速度取得了突破。人工智能將繼續改變各行各業&#xff0c;預計2023年至2030年的年增長率將達到37.3%。由于一種新的知識工作者現在面臨被取代的風險&#xff0c;生成式人工智能的驚人崛起進一步加劇了這種緊迫性。據《未…

如何快速學好一門新技術

目錄 學習步驟 1. 基本了解 2. 快速上手 3. 系統學習 4. 主動運用 5. 了解原理 6. 深入源碼 7. 修改源碼 8. 推陳出新 學到哪一步? 無論學習任何編程技術,都可以遵循以下步驟: 學習步驟 1. 基本了解 首先了解這項技術的用途、優缺點及適用場景。建議通過網上的經…

Apache Hadoop文件上傳、下載、分布式計算案例初體驗

上篇&#xff1a;Apache Hadoop完全分布式集群搭建無坑指南-CSDN博客 通過上篇&#xff0c;我們搭建了完整的Hadoop集群&#xff0c;此篇我們簡單通過集群上傳和下載文件&#xff0c;同時測試分布式worldCount案例。后續的篇章再對分布式計算、分布式存儲作更深的理解。 上傳…

嘎嘎詳細的三維變換詳細講解,包括視圖變換、投影變換等,超級通俗易懂!

前置二維空間的各種變換筆記&#xff1a;二維變換 三維空間中的齊次坐標 從二維變換開始引申&#xff0c;可得到三維中的一個點的表達方式為 ( x , y , z , 1 ) ? (\mathbf{x}, \mathbf{y}, \mathbf{z}, 1)^{\top} (x,y,z,1)?&#xff0c;也就是w1&#xff0c;而三維的向量…

插入排序算法(C語言版)

直接插入排序 插入排序&#xff08;insert sort&#xff09;是一種簡單的排序算法&#xff0c;它的工作原理與手動整理一副牌的過程非常相似。 具體來說&#xff0c;我們在未排序區間選擇一個基準元素&#xff0c;將該元素與其左側已排序區間的元素逐一比較大小&#xff0c;并…

如何用 Python 繞過 cloudflare(5秒盾) 抓取數據:也不是很難嘛!

大家好!我是愛摸魚的小鴻,關注我,收看每期的編程干貨。 逆向是爬蟲工程師進階必備技能,當我們遇到一個問題時可能會有多種解決途徑,而如何做出最高效的抉擇又需要經驗的積累。本期文章將以實戰的方式,帶你全面了解 cloudflare(5秒盾) 以及如何繞過使用 cloudflare 服務…

(自用)gtest單元測試

gtest是Google的一套用于編寫C測試的框架&#xff0c;可以運行在很多平臺上&#xff08;包括Linux、Mac OS X、Windows、Cygwin等等&#xff09;。基于xUnit架構。支持很多好用的特性&#xff0c;包括自動識別測試、豐富的斷言、斷言自定義、死亡測試、非終止的失敗、生成XML報…

Mybatis的優缺點及適用場景?

目錄 一、什么是Mybatis&#xff1f; 二、Mybatis框架的特點 三、Mybatis框架的優點&#xff1f; 四、MyBatis 框架的缺點&#xff1f; 五、MyBatis 框架適用場合&#xff1f; 六、代碼示例 1. 配置文件 mybatis-config.xml 2. 映射文件 UserMapper.xml 3. Java 代碼…

QT TCP網絡通信編程

學習目標&#xff1a; TCP網絡通信編程 前置環境 運行環境:qt creator 4.12 學習內容 一、TCP 協議基礎知識: TCP 是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。TCP 擁塞控制算法包括慢啟動、擁塞避免、快速重傳和快速恢復。TCP 通信需要建立連接,Qt 提供 QTcp…

linux 查看歷史命令列表來訪問之前的內容的命令是:history

在Linux中&#xff0c;要查看歷史命令列表以訪問之前的內容&#xff0c;你可以使用history命令。這個命令會顯示你當前shell會話&#xff08;或者&#xff0c;如果你指定了參數&#xff0c;可能是所有會話&#xff09;中執行過的命令列表。 基本用法 簡單地輸入history并按下…

設計模式使用場景實現示例及優缺點(結構型模式——代理模式、外觀模式)

結構型模式 代理模式&#xff08;Proxy Pattern&#xff09; 代理模式&#xff08;Proxy Pattern&#xff09;是一種結構型設計模式&#xff0c;它通過引入一個代理對象來控制對另一個對象的訪問。這個代理對象可以為被代理的對象提供額外的功能&#xff0c;例如訪問控制、延…