通过 QueryView 插件和高德 API 获取天气信息

本贴最后更新于 203 天前,其中的信息可能已经水流花落

环境准备

下载 QueryView 插件

插件里搜索 Query 下载

1.png

到高德地图里创建 key

用其他提供天气和位置 API 的平台也可以

我这里以高德地图来举例子

到高德地图的控制台里点左边的 应用管理-我的应用,然后点右上角的 创建key,然后服务平台选择 web服务

3.png

然后复制你的 key

2.png

把你的 key 放到下面的代码

根据地区码获取当前位置天气信息

//!js
let dv = Query.DataView(protyle, item, top);

fetch("https://restapi.amap.com/v3/weather/weatherInfo?key=换成你的key&city=换成你的城市码&extensions=base")
    .then(async response => {
        if (!response.ok) {
            throw new Error("天气数据请求失败");
        }

        const data = await response.json();
        const weatherData = data.lives[0];

        const province = weatherData.province;
        const city = weatherData.city;
        const adcode = weatherData.adcode;
        const weather = weatherData.weather;
        const temperature = weatherData.temperature;
        const windDirection = weatherData.winddirection;
        const windPower = weatherData.windpower;
        const humidity = weatherData.humidity;
        const reportTime = weatherData.reporttime;

	dv.addmd('根据地区码获取当前位置天气信息');

        const weatherText = `
省份:${province}
区域:${city}
区域编码:${adcode}
天气现象:${weather}
实时气温:${temperature}°C
风向描述:${windDirection}
风力级别:${windPower}级
空气湿度:${humidity}%
数据发布的时间:${reportTime}
`;

        // 假设 addmd 支持换行符或者你可以逐行添加
        dv.addmd(weatherText.trim());

    })
    .catch(error => {
        console.error("获取天气信息出错:", error);
        dv.addmd("> 天气信息获取失败,请稍后再试。");
    });

dv.render();

把上面代码中的 key 和 city 换成你的 key 和你所在地的城市码

fetch("https://restapi.amap.com/v3/weather/weatherInfo?key=换成你的key&city=换成你的城市码&extensions=base")

根据根据 ip 获取当前位置天气信息

//!js
let dv = Query.DataView(protyle, item, top);

// 获取IP定位的城市代码
fetch('https://restapi.amap.com/v3/ip?key=换成你的key')
.then(async ipResponse => {
    if (!ipResponse.ok) throw new Error('IP定位失败');
  
    const ipData = await ipResponse.json();
    if (ipData.status !== '1') throw new Error(ipData.info || 'IP定位服务异常');
  
    const cityCode = ipData.adcode;
  
    // 使用城市代码获取天气
    return fetch(`https://restapi.amap.com/v3/weather/weatherInfo?key=换成你key&city=${cityCode}&extensions=base`);
})
.then(async weatherResponse => {
    if (!weatherResponse.ok) throw new Error('天气查询失败');
  
    const weatherData = await weatherResponse.json();
    if (weatherData.status !== '1') throw new Error(weatherData.info || '天气服务异常');
  
    const weatherInfo = weatherData.lives[0];
  
    dv.addmd('根据ip获取当前位置天气信息');
    dv.addmd(`
 **省份**: ${weatherInfo.province}
 **城市**: ${weatherInfo.city}
 **区域编码**: ${weatherInfo.adcode}
 **天气现象**: ${weatherInfo.weather}
 **实时气温**: ${weatherInfo.temperature}°C
 **风向**: ${weatherInfo.winddirection}
 **风力**: ${weatherInfo.windpower}级
 **湿度**: ${weatherInfo.humidity}%
 **发布时间**: ${weatherInfo.reporttime}
    `);
})
.catch(error => {
    console.error('获取天气数据失败:', error);
    dv.addmd('## 获取天气数据失败\n> ' + (error.message || '请检查网络连接或稍后再试'));
});

dv.render();

同理,把上面代码中的 key 换成你的 key

fetch('https://restapi.amap.com/v3/ip?key=换成你的key')
// 使用城市代码获取天气
    return fetch(`https://restapi.amap.com/v3/weather/weatherInfo?key=换成你key&city=${cityCode}&extensions=base`);
})

效果

4.png

高德 API 说明文档

天气查询-高级 API 文档-开发指南-Web 服务 API | 高德地图 API

根据说明文档查询需要返回数据的参数名。

天气预测官方文档天气-服务-教程-地图 JS API 1.4| 高德地图 API

注:放的是城市编码,而不是邮政编码。

查询城市编码网址:2025 年全国行政区划代码查询 - Converts 在线工具

  • QueryView
    21 引用 • 84 回帖
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    28447 引用 • 119791 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...