vue 根据获取到的城市信息,获取该地的天气情况

方法一

1、下载axios,并在main.js入口函数中引入axios

import axios from "axios";
Vue.prototype.$axios = axios

页面中

<span>{{weather}}</span><span v-if="lower">{{lower}}~{{higher}}</span>


created(){
    this.getWeather() // 获取天气
  },
  methods: {
    getWeather(){
      this.$axios
        .get("http://wthrcdn.etouch.cn/weather_mini?city=郑州")
        .then(res=> {
          this.weather = res.data.data.forecast[0].type ? res.data.data.forecast[0].type : ''
          this.lower = res.data.data.forecast[0].low.substr(2)
          this.higher = res.data.data.forecast[0].high.substr(2)
            console.log(res.data.data);
        })
        .catch(function(error) {
            console.log(error);
        });
    }
 }

效果如下图
在这里插入图片描述

返回示例 res.data.data 根据情况显示相应字段

在这里插入图片描述

上述的链接有时会调取失败,新找了一个地址可以获取天气信息的,见方法二

方法二

1、引入axios、定义图标名称的文件

import axios from 'axios';
import weathJson from '../../utils/weath.json';
import weekJson from '../../utils/week.json';

图标weath.json如下:其中名称对应相应的字体图标文件,字体图标文件见上传的资源

{
    "晴": "icon-qing",
    "少云": "icon-duoyun",
    "晴间多云": "icon-duoyun",
    "多云": "icon-duoyun",
    "阴": "icon-yin",
    "有风": "icon-dafeng",
    "平静": "icon-qing",
    "微风": "icon-dafeng",
    "和风": "icon-dafeng",
    "清风": "icon-dafeng",
    "强风/劲风": "icon-dafeng",
    "疾风": "icon-dafeng",
    "大风": "icon-dafeng",
    "烈风": "icon-dafeng",
    "风暴": "icon-dafeng",
    "狂爆风": "icon-dafeng",
    "飓风": "icon-dafeng",
    "热带风暴": "icon-dafeng",
    "霾": "icon-wumai",
    "中度霾": "icon-wumai",
    "重度霾": "icon-wumai",
    "严重霾": "icon-wumai",
    "阵雨": "icon-xiayu",
    "雷阵雨": "icon-xiayu",
    "雷阵雨并伴有冰雹": "icon-xiayu",
    "中雨": "icon-xiayu",
    "小雨": "icon-xiayu",
    "大雨": "icon-xiayu",
    "暴雨": "icon-xiayu",
    "大暴雨": "icon-xiayu",
    "特大暴雨": "icon-xiayu",
    "强阵雨": "icon-xiayu",
    "强雷阵雨": "icon-xiayu",
    "极端降雨": "icon-xiayu",
    "毛毛雨/细雨": "icon-xiayu",
    "雨": "icon-xiayu",
    "小雨-中雨": "icon-xiayu",
    "中雨-大雨": "icon-xiayu",
    "大雨-暴雨": "icon-xiayu",
    "暴雨-大暴雨": "icon-xiayu",
    "大暴雨-特大暴雨": "icon-xiayu",
    "雨雪天气": "icon-xue",
    "雨夹雪": "icon-xue",
    "阵雨夹雪": "icon-xue",
    "冻雨": "icon-xiayu",
    "雪":"icon-xue",
    "阵雪":"icon-xue",
    "小雪":"icon-xue",
    "中雪":"icon-xue",
    "大雪":"icon-xue",
    "暴雪":"icon-xue",
    "小雪-中雪":"icon-xue",
    "中雪-大雪":"icon-xue",
    "大雪-暴雪":"icon-xue",
    "浮尘":"icon-yangsha",
    "扬沙":"icon-yangsha",
    "沙尘暴":"icon-yangsha",
    "强沙尘暴":"icon-yangsha",
    "龙卷风":"icon-yangsha",
    "雾":"icon-wu",
    "浓雾":"icon-wu",
    "强浓雾":"icon-wu",
    "轻雾":"icon-wu",
    "大雾":"icon-wu",
    "特强浓雾":"icon-wu",            
    "热":"icon-re1",
    "冷":"icon-lengcangqu",
    "未知":"icon-qing"
}

一周的汉字文件 week.json

{
    "1":"周一",
    "2":"周二",
    "3":"周三",
    "4":"周四",
    "5":"周五",
    "6":"周六",
    "7":"周日"
}

2、定义变量

cityName: "",
adcode: '',
weathArray: []

3、在高德开放平台新建应用获取key,通过key获取所在城市code
在这里插入图片描述
4、根据key获取城市信息

GetLocation(){
     axios({
     url: 'https://restapi.amap.com/v3/ip',
     method: 'post',
     params: {
         key: 'gaode-your_key'
     },
     }).then((res)=> {
         this.getWeathData(res.data.city, res.data.adcode)
     }).catch();
 },

5、根据code获取天气信息

getWeathData(cityName, cityCode) {
      this.cityName = cityName
       let that = this;
       axios({
           url: "https://restapi.amap.com/v3/weather/weatherInfo",
           method: "GET",
           params: {
           key: "4ac62e6ba8a3f68f05421f6ee7dd6f29",
           city: cityCode,
           extensions: 'all',
           output: "JSON"
           },
       }).then(function (resp) {
           that.renderWeathDom(resp.data);
       })
       .catch();
   },

6、结构渲染

<div class="three_days" v-for="(item,i) in weathArray" :key="i">
    <span>{{  item.date }}</span>
    <svg class="icon_weather" aria-hidden="true">
        <use :xlink:href="`#${item.dayweatherIcon}`"></use>
    </svg>
    <span>{{item.nighttemp}}-{{item.daytemp}}℃</span>
    <span>{{item.dayweather}}</span>
    <span>{{item.nightwind}}风{{item.daypower}}级</span>
</div>

css

.three_days{
  display: inline-flex;
  flex-direction: column;
  justify-content: space-around;
  align-items: center;
  .icon_weather{
width: 50px;
height: 50px;
margin: 15px 0;
}
  span:nth-child(4){
      margin: 15px 0;
  }
}

如图:
在这里插入图片描述

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
要在Vue3中获取本地天气情况,你可以使用百度地图API来实现。首先,你需要在你的项目中引入百度地图的JavaScript文件。你可以在根目录的index.html文件的body标签中加入以下代码来引入百度地图API: ```html <script src="https://api.map.baidu.com/api?v=3.0&ak=你在百度地图申请的Ak"></script> ``` 接下来,你可以新建一个名为bdmap.js的文件,并将以下代码放入其中: ```javascript export default { init: function () { const AK = "EAG3waLsHfeWew8ZjxlvQgvxuqXY5moB"; // 你在百度地图申请的AK const BMap_URL = "https://api.map.baidu.com/api?v=2.0&ak=" + AK + "&s=1&callback=onBMapCallback"; return new Promise((resolve, reject) => { // 如果已加载直接返回 if (typeof BMap !== "undefined") { resolve(BMap); return true; } // 百度地图异步加载回调处理 window.onBMapCallback = function () { resolve(BMap); }; // 插入script脚本 let scriptNode = document.createElement("script"); scriptNode.setAttribute("src", BMap_URL); document.body.appendChild(scriptNode); }); }, }; ``` 然后,在你要使用天气情况的页面中,你可以通过以下方式来获取本地天气情况: ```javascript import bdmap from "@/path/to/bdmap.js"; export default { data() { return { weather: "", }; }, mounted() { bdmap.init().then((BMap) => { let geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition((position) => { let geoc = new BMap.Geocoder(); geoc.getLocation(position.point, (rs) => { let city = rs.addressComponents.city; // 在这里可以使用city来获取本地天气情况 // 你可以使用其他天气API来获取天气数据 // 并将天气数据赋值给this.weather }); }); }); }, }; ``` 在上述代码中,我们首先通过bdmap.init()方法来初始化百度地图API。然后,我们使用BMap.Geolocation来获取当前位置的经纬度信息。接下来,我们使用BMap.Geocoder来将经纬度转换为地址信息,并从中提取出城市信息。最后,你可以使用其他天气API来获取天气数据,并将天气数据赋值给this.weather变量。 请注意,你需要将代码中的"@/path/to/bdmap.js"替换为你实际的bdmap.js文件的路径。另外,你还需要在百度地图开放平台上申请一个AK,并将其替换为代码中的AK值。 #### 引用[.reference_title] - *1* *2* [vue3获取当前位置和当前天气情况](https://blog.csdn.net/weixin_57547803/article/details/129893698)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值