「教程」微信小程序获取经纬度查询天气预警信息

简介: 「教程」微信小程序获取经纬度查询天气预警信息

使用天气预警API 可以帮助人们及时获取和了解天气预警信息,以便采取相应的措施来保护自身和财产。天气预警通常是由气象部门或相关机构发布的,用于提醒公众可能出现的极端天气或自然灾害,如暴雨、洪水、台风、暴风雪、雷暴、高温、低温、霜冻等。

本文将详细介绍如何利用微信小程序获取地理位置和经纬度,并通过天气预警 API 获取预警信息的步骤和示例代码。

天气预警 API 简介

天气预警 API 获取指定城市当前生效中的各类天气预警,同时也支持国内任意经纬度查询,接口会返回该经纬度最近的各类天气预警,如寒潮蓝色预警信号,或一次性拉取全国所有生效中的天气预警,预警数据来自国家预警中心。如部分城市无生效预警,则返回值为空,请做好空值处理。

代码教程

1. 授权获取地理位置信息:

首先,你需要在小程序的代码中请求用户授权获取地理位置信息。可以使用 wx.authorize 方法请求用户授权,并指定 scope.userLocation 权限。

wx.authorize({
  scope: 'scope.userLocation',
  success: function () {
    // 用户授权成功
  },
  fail: function () {
    // 用户拒绝授权或授权失败
    wx.showToast({
      title: '请授权地理位置信息',
      icon: 'none',
      duration: 2000
    });
  }
})

2. 获取地理位置

在用户授权成功后,可以使用 wx.getLocation 方法获取用户的地理位置信息。该方法会返回用户的经纬度等详细信息。

wx.getLocation({
  type: 'wgs84',
  success: function (res) {
    var latitude = res.latitude;   // 纬度
    var longitude = res.longitude; // 经度

    // 调用逆地理编码接口获取当前位置信息
    getAddressInfo(latitude, longitude)
    // 在这里调用获取天气信息的函数,并传入经纬度参数
    getWeatherInfo(latitude, longitude);
  }
})

上述示例中的 type: 'wgs84' 表示使用 WGS84 坐标系获取经纬度信息。你还可以使用其他坐标系,如 'gcj02',根据你的需求进行调整。

3. 显示当前位置信息

在小程序界面中展示用户当前位置的信息,例如城市名称或详细地址。创建一个函数 getAddressInfo, 接收经纬度参数,可以使用微信小程序提供的逆地理编码接口将经纬度转换为具体的位置信息。


    function getAddressInfo(latitude, longitude) {
      wx.request({
          url: 'https://apis.map.qq.com/ws/geocoder/v1/',
          data: {
            location: latitude + ',' + longitude,
            key: 'Your_Tencent_Map_API_Key' 
          },
          success: function (response) {
            var address = response.data.result.address; // 获取位置信息

            // 在界面上展示当前位置信息
            console.log('当前位置:' + address);
          },
          fail: function () {
            // 网络请求失败
            wx.showToast({
              title: '网络请求失败,请稍后重试',
              icon: 'none',
              duration: 2000
            });
          }
        });
    }

4. 获取实时天气情况

创建一个函数 getWeatherAlamInfo,接收经纬度参数,并在函数内部调用天气预警 API。

function getWeatherAlamInfo(latitude, longitude) {
  var url = "https://eolink.o.apispace.com/467456/weather/v001/alarm?lonlat=" + longitude + "," + latitude;

  wx.request({
    url: url,
    method: "GET",
    header: {
      "X-APISpace-Token": "", // 替换为空字符串的部分应填写APISpace API Key
      "Authorization-Type": "apikey"
    },
    success: function (response) {
     console.log(response.data)
    },
    fail: function () {
      // 网络请求失败
      wx.showToast({
        title: '网络请求失败,请稍后重试',
        icon: 'none',
        duration: 2000
      });
    }
  });
}

注意: API Key 可以到 APISpace 登录注册获取。

返回示例

{
    "status": 0,
    "result": {                    //传areacode的返回示例
        "location": {
            "areacode": "101250101",        //城市ID
            "name": "长沙",                        //城市中文名
            "country": "中国",                //所属国家中文名
            "path": "长沙,长沙市,湖南省,中国"            //行政区划路径
        },
        "alerts": [
            {
                "geocode": "430000",                //预警地区编码
                "title": "湖南省森林防灭火指挥部发布森林火险黄色预警[Ⅲ级/较重]",                //预警标题
                "desc": "湖南省森林防灭火指挥部2月27日发布森林火险黄色预警:未来……",//预警详情
                "type": "森林火险",                        //预警类型
                "level": "黄色预警",                        //预警等级
                "public_time": "2020-02-27 09:50:44",        //预警发布时间
                "effective": "2020-02-27 09:50:44",        //预警生效时间
                "expires": "2020-02-28 00:00:00"                //预警失效时间
            }
                ……                                    //其它当地预警信息
        ]
    }
}

注:其中预警类型和等级包括但不仅限于以下类型:

结语

通过获取天气预警信息,人们可以及时了解可能发生的极端天气或自然灾害,如暴雨、洪水、台风等,从而采取相应的防护和安全措施。

随着技术的不断发展,天气预警API的功能和数据也将不断完善和更新。我们相信,借助天气预警API的强大功能,人们将能够更加科学、准确地预测和应对天气变化,提高生活质量和安全水平。

相关文章
|
24天前
|
小程序 JavaScript
微信小程序之input组件及其获取用户输入信息
微信小程序之input组件及其获取用户输入信息
35 1
|
2月前
详细教程:扫码提交表单后,数据直接推送到企业微信、钉钉、飞书群聊
在草料制作的表单中,填表人扫码填写并提交数据后,这些信息可以立即通过企业微信、钉钉或飞书自动推送到相应的群聊中,实现即时共享和沟通,提升团队协作效率。
|
3月前
|
小程序 编译器 数据安全/隐私保护
小白保姆级教程:微信公众号开发,从0到1
【8月更文挑战第8天】小白保姆级教程:微信公众号开发,从0到1
176 3
小白保姆级教程:微信公众号开发,从0到1
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的高校毕业生就业信息系统小程序附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的高校毕业生就业信息系统小程序附带文章源码部署视频讲解等
48 2
|
4月前
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
403 0
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的招聘信息推荐系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的招聘信息推荐系统附带文章源码部署视频讲解等
25 0
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的数据分析岗位招聘信息与分析附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的数据分析岗位招聘信息与分析附带文章源码部署视频讲解等
21 0
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的校园二手市场信息发布系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的校园二手市场信息发布系统附带文章源码部署视频讲解等
30 0
|
4月前
|
小程序 前端开发
【微信小程序-原生开发】实用教程22 - 绘制图表(引入 echarts,含图表的懒加载-获取到数据后再渲染图表,多图表加载等技巧)
【微信小程序-原生开发】实用教程22 - 绘制图表(引入 echarts,含图表的懒加载-获取到数据后再渲染图表,多图表加载等技巧)
228 0
|
4月前
|
小程序
【微信小程序-原生开发】实用教程21 - 分包
【微信小程序-原生开发】实用教程21 - 分包
342 0