如何在 openweather API 中查找 7 天的天气预报?

How to find 7 days weather forecast in openweather API?

我正在尝试使用 openweather API 查找 7 天的天气预报,但是当我调用 openweather API 时,当前位置没有数据,谁能指导我找到正确的 API 以获取当前位置的天气预报。

API 目前已使用

1. api.openweathermap.org/data/2.5/forecast?q={city name}&appid={API key}
2. https://api.openweathermap.org/data/2.5/onecall?lat={lat}&lon={lon}&exclude={part}&appid={API key}

参考链接:

  1. https://openweathermap.org/forecast5
  2. https://openweathermap.org/api/one-call-api

要求:https://api.openweathermap.org/data/2.5/forecast?q=India&appid={MY_API_ID} 响应:(仅添加了 40 天中的 2 天数据)

{
    "cod": "200",
    "message": 0,
    "cnt": 40,
    "list": [
        {
            "dt": 1600668000,
            "main": {
                "temp": 283.42,
                "feels_like": 282.81,
                "temp_min": 283.42,
                "temp_max": 284.26,
                "pressure": 1018,
                "sea_level": 1018,
                "grnd_level": 862,
                "humidity": 84,
                "temp_kf": -0.84
            },
            "weather": [
                {
                    "id": 802,
                    "main": "Clouds",
                    "description": "scattered clouds",
                    "icon": "03d"
                }
            ],
            "clouds": {
                "all": 32
            },
            "wind": {
                "speed": 0.1,
                "deg": 22
            },
            "visibility": 10000,
            "pop": 0,
            "sys": {
                "pod": "d"
            },
            "dt_txt": "2020-09-21 06:00:00"
        },
        {
            "dt": 1600722000,
            "main": {
                "temp": 283.34,
                "feels_like": 282.29,
                "temp_min": 283.34,
                "temp_max": 283.34,
                "pressure": 1016,
                "sea_level": 1016,
                "grnd_level": 861,
                "humidity": 86,
                "temp_kf": 0
            },
            "weather": [
                {
                    "id": 500,
                    "main": "Rain",
                    "description": "light rain",
                    "icon": "10n"
                }
            ],
            "clouds": {
                "all": 66
            },
            "wind": {
                "speed": 0.82,
                "deg": 149
            },
            "visibility": 823,
            "pop": 0.35,
            "rain": {
                "3h": 0.18
            },
            "sys": {
                "pod": "n"
            },
            "dt_txt": "2020-09-21 21:00:00"
        }
    ],
    "city": {
        "id": 3168508,
        "name": "Innichen",
        "coord": {
            "lat": 46.7406,
            "lon": 12.2797
        },
        "country": "IT",
        "population": 3107,
        "timezone": 7200,
        "sunrise": 1600664205,
        "sunset": 1600708262
    }
}

你有很多问题,如果你能缩小问题范围会很有帮助。但这是我尽我所能提供帮助的最佳方式:

对于 7 天的预报,您需要申请 7 天的预报。

在您的请求示例中 1. api.openweathermap.org/data/2.5/forecast?q={city name}&appid={API key} 您还包含了一个 link that you used 用于 5 天的请求。 如果您想要 7 天,那就有问题了天。

如果您想要 5 天的预报,您在第一个示例中引用的 API 需要一个城市名称 并且(如果您想要包括一个国家/地区) 要求国家/地区名称在 ISO 3166 中 因此印度将是“IND”而不是 INDIA。

无论您想要 5 天还是 7 天,您都需要比印度更具体。

在 5 天的情况下,您将需要一个城市名称。对于孟买的 5 天预报,您可以使用您在第一个示例中尝试过的 API,如下所示:

  "https://api.openweathermap.org/data/2.5/forecast?q=mumbai&appid={yourAPIKey}"

在7天的情况下,您将需要经纬度坐标。
对于孟买的 7 天预报,您可以使用您在第二个示例中尝试过的 API,如下所示:

   //includes lat and long for mumbai
 "https://api.openweathermap.org/data/2.5/onecall?lat=19.0760&lon=72.8777&appid={yourAPIkey}"

     

我希望这能回答你的问题。

对于 7 天的预测,您必须将经纬度和 api id 传递到 url

以下

"https://api.openweathermap.org/data/2.5/onecall?lat=${lat}&lon=${lon}&appid=${api}"" =13=]

要获取搜索城市的经纬度,您可以先创建一个 api 调用 url 下面,然后使用该数据传递给上面 url。 https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${api}

希望这对您有所帮助。一种尝试方法。

// 获取经纬度:

const getData = async () => {
    let city = document.getElementById("cityName").value; //input from user.
    let url = `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${api}`;
    try {
      let res = await fetch(url);
      let data = await res.json();
      let lat = data.coord.lat;
      let lon = data.coord.lon;
      getDatafor7days(lat, lon);
    } catch (error) {
      console.log(error);
    }
  };

// 传递经纬度以获得 7 天的预报:

const getDatafor7days = async (lat, lon) => {
    let url = `https://api.openweathermap.org/data/2.5/onecall?lat=${lat}&lon=${lon}&appid=${api}`;
    try {
      let res = await fetch(url);
      let data = await res.json();
      console.log("data", data);
    } catch (error) {
      console.log(error);
    }
  };