找回密码
 立即注册
查看: 381|回复: 0

[前端] 微信小程序使用百度api获取天气信息

[复制链接]

224

主题

0

回帖

773

积分

高级会员

积分
773
发表于 2024-6-19 12:02:08 | 显示全部楼层 |阅读模式
本帖最后由 御坂主机 于 2024-6-20 13:50 编辑

1. 引言

微信小程序已经成为开发移动应用的热门选择,具有轻量、便捷、跨平台的特点。获取天气信息是许多小程序的常见需求,本文将详细介绍如何在微信小程序中使用百度API获取天气信息。通过本文的指导,您将能够快速实现这一功能,为用户提供实时的天气信息。

2. 准备工作

2.1 注册百度开发者账号

首先,需要注册一个百度开发者账号,并创建一个应用以获取API Key。访问百度开发者平台(http://developer.baidu.com),完成注册并登录。

2.2 创建应用并获取API Key

登录后,导航到“控制台”->“我的应用”,点击“创建应用”。填写应用信息并选择“天气服务”API,创建应用后可以在“应用详情”中找到API Key。

3. 微信小程序项目设置

3.1 创建微信小程序项目

在微信开发者工具中创建一个新的小程序项目,并配置基本信息。

3.2 配置小程序权限

在`app.json`文件中配置小程序的网络权限,允许访问外部API。

  1. {
  2.   "pages": [
  3.     "pages/index/index"
  4.   ],
  5.   "window": {
  6.     "navigationBarTitleText": "天气预报"
  7.   },
  8.   "networkTimeout": {
  9.     "request": 10000
  10.   },
  11.   "permission": {
  12.     "scope.userLocation": {
  13.       "desc": "获取您的位置信息用于天气查询"
  14.     }
  15.   }
  16. }
复制代码


4. 获取用户位置

为了提供准确的天气信息,需要获取用户的地理位置。使用微信小程序的`wx.getLocation` API可以实现这一功能。

4.1 请求地理位置权限

在`index.js`中添加以下代码,获取用户的地理位置:

  1. Page({
  2.   data: {
  3.     latitude: '',
  4.     longitude: '',
  5.     weatherInfo: {}
  6.   },
  7.   onLoad: function() {
  8.     this.getLocation();
  9.   },
  10.   getLocation: function() {
  11.     wx.getLocation({
  12.       type: 'wgs84',
  13.       success: (res) => {
  14.         this.setData({
  15.           latitude: res.latitude,
  16.           longitude: res.longitude
  17.         });
  18.         this.getWeather(res.latitude, res.longitude);
  19.       },
  20.       fail: () => {
  21.         wx.showToast({
  22.           title: '获取位置信息失败',
  23.           icon: 'none'
  24.         });
  25.       }
  26.     });
  27.   }
  28. })
复制代码


5. 调用百度天气API

有了用户的地理位置,就可以调用百度天气API获取天气信息。

5.1 构建API请求

在`index.js`中添加以下代码,调用百度天气API:

  1. getWeather: function(latitude, longitude) {
  2.   const apiKey = '您的API_KEY';
  3.   const url = `<a href="http://api.map.baidu.com/telematics/v3/weather?location=" target="_blank">http://api.map.baidu.com/telematics/v3/weather?location=</a>${longitude},${latitude}&output=json&ak=${apiKey}`;
  4.   wx.request({
  5.     url: url,
  6.     success: (res) => {
  7.       if (res.data.error === 0) {
  8.         this.setData({
  9.           weatherInfo: res.data.results[0]
  10.         });
  11.       } else {
  12.         wx.showToast({
  13.           title: '获取天气信息失败',
  14.           icon: 'none'
  15.         });
  16.       }
  17.     },
  18.     fail: () => {
  19.       wx.showToast({
  20.         title: '请求失败',
  21.         icon: 'none'
  22.       });
  23.     }
  24.   });
  25. }
复制代码

6. 显示天气信息

在获取到天气信息后,需要在界面上显示。修改`index.wxml`文件,添加显示天气信息的组件:

  1. <view class="container">
  2.   <view class="weather-info">
  3.     <text>城市: {{weatherInfo.currentCity}}</text>
  4.     <text>PM2.5: {{weatherInfo.pm25}}</text>
  5.     <text>天气: {{weatherInfo.weather_data[0].weather}}</text>
  6.     <text>温度: {{weatherInfo.weather_data[0].temperature}}</text>
  7.     <text>风力: {{weatherInfo.weather_data[0].wind}}</text>
  8.   </view>
  9. </view>
复制代码


7. 完整示例代码

7.1 index.js

  1. Page({
  2.   data: {
  3.     latitude: '',
  4.     longitude: '',
  5.     weatherInfo: {}
  6.   },
  7.   onLoad: function() {
  8.     this.getLocation();
  9.   },
  10.   getLocation: function() {
  11.     wx.getLocation({
  12.       type: 'wgs84',
  13.       success: (res) => {
  14.         this.setData({
  15.           latitude: res.latitude,
  16.           longitude: res.longitude
  17.         });
  18.         this.getWeather(res.latitude, res.longitude);
  19.       },
  20.       fail: () => {
  21.         wx.showToast({
  22.           title: '获取位置信息失败',
  23.           icon: 'none'
  24.         });
  25.       }
  26.     });
  27.   },
  28.   getWeather: function(latitude, longitude) {
  29.     const apiKey = '您的API_KEY';
  30.     const url = `<a href="http://api.map.baidu.com/telematics/v3/weather?location=" target="_blank">http://api.map.baidu.com/telematics/v3/weather?location=</a>${longitude},${latitude}&output=json&ak=${apiKey}`;
  31.     wx.request({
  32.       url: url,
  33.       success: (res) => {
  34.         if (res.data.error === 0) {
  35.           this.setData({
  36.             weatherInfo: res.data.results[0]
  37.           });
  38.         } else {
  39.           wx.showToast({
  40.             title: '获取天气信息失败',
  41.             icon: 'none'
  42.           });
  43.         }
  44.       },
  45.       fail: () => {
  46.         wx.showToast({
  47.           title: '请求失败',
  48.           icon: 'none'
  49.         });
  50.       }
  51.     });
  52.   }
  53. })
复制代码

7.2 index.wxml

  1. <view class="container">
  2.   <view class="weather-info">
  3.     <text>城市: {{weatherInfo.currentCity}}</text>
  4.     <text>PM2.5: {{weatherInfo.pm25}}</text>
  5.     <text>天气: {{weatherInfo.weather_data[0].weather}}</text>
  6.     <text>温度: {{weatherInfo.weather_data[0].temperature}}</text>
  7.     <text>风力: {{weatherInfo.weather_data[0].wind}}</text>
  8.   </view>
  9. </view>
复制代码


8. 结论

通过本文的介绍,您已经了解了如何在微信小程序中使用百度API获取天气信息。从注册百度开发者账号、配置微信小程序,到获取用户位置并调用API获取天气信息,这一过程涵盖了实现该功能的所有步骤。希望本文对您有所帮助,能够让您的小程序更加丰富多彩。






------------------------------------------------------------------------------------------------------------------------------------------

========  御 坂 主 机  ========

>> VPS主机 服务器 前沿资讯 行业发布 技术杂谈 <<

>> 推广/合作/找我玩  TG号 : @Misaka_Offical <<

-------------------------------------------------------------------------------------------------------------------------------------------

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-4 13:33 , Processed in 0.059505 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表