|
| 1 | +--- |
| 2 | +title: 天氣預報 API |
| 3 | +sidebar_label: '天氣預報' |
| 4 | +--- |
| 5 | + |
| 6 | +此 API 允許您檢索 16 天/每日和 5 天/3 小時的天氣預報。 |
| 7 | + |
| 8 | +> 對應的 OpenWeatherMap 文件: |
| 9 | +> - [5 天/3 小時預報](https://openweathermap.org/forecast5) |
| 10 | +> - [16 天/每日預報](https://openweathermap.org/forecast16) |
| 11 | +
|
| 12 | +`$owm->getWeatherForecast()` 函式接受以下參數: |
| 13 | + |
| 14 | +| 名稱 | 類型 | 預設值 | 描述 | |
| 15 | +|------|------|---------|-------------| |
| 16 | +| `$query` | `mixed` | -- | 見下文 | |
| 17 | +| `$units` | `"imperial"`|`"metric"` | `"imperial"` | 使用的單位 | |
| 18 | +| `$lang` | `string` | `en` | [官方文件](https://openweathermap.org/forecast16#multi)底部列出語言之一 | |
| 19 | +| `$appid` | `string` | `''` | 已棄用,始終設置為 `''` | |
| 20 | +| `$days` | `int` (1 - 16) | `1` | 要檢索預報的天數。如果 `$days` 在 1 到 5 之間,則使用 5 天/3 小時預報 API。如果 `$days` 在 6 到 16 之間,則使用 16 天/每日預報 API。| |
| 21 | + |
| 22 | +如果您希望在有 3 小時預報時檢索每日預報,可以使用 `->getDailyWeatherForecast()`。 |
| 23 | + |
| 24 | +## `$query` 參數 |
| 25 | + |
| 26 | +第一個參數確定要獲取天氣數據的位置。有幾種可能的函式: |
| 27 | + |
| 28 | +### 根據城市名稱 |
| 29 | + |
| 30 | +指定國家是可選的。 |
| 31 | + |
| 32 | +```php |
| 33 | +$forecasts = $owm->getWeatherForecast('Berlin,DE', $units, $lang, '', $days); |
| 34 | +``` |
| 35 | + |
| 36 | +### 根據城市 ID |
| 37 | + |
| 38 | +一個城市 ID: |
| 39 | +```php |
| 40 | +$forecasts = $owm->getWeatherForecast(2172797, $units, $lang, '', $days); |
| 41 | +``` |
| 42 | + |
| 43 | +### 根據郵政編碼 |
| 44 | + |
| 45 | +指定國家是可選的。 |
| 46 | + |
| 47 | +```php |
| 48 | +// 印度,海得拉巴 |
| 49 | +$forecasts = $owm->getWeatherForecast('zip:500001,IN', $units, $lang, '', $days); |
| 50 | +``` |
| 51 | + |
| 52 | +### 根據座標 |
| 53 | + |
| 54 | +```php |
| 55 | +$forecasts = $owm->getWeatherForecast(['lat' => 77.73038, 'lon' => 41.89604], |
| 56 | + $units, $lang, '', $days); |
| 57 | +``` |
| 58 | + |
| 59 | +## `$forecasts` 物件 |
| 60 | + |
| 61 | +`$forecasts` 是 `Cmfcmf\OpenWeatherMap\WeatherForecast` 的實例。它提供以下數據: |
| 62 | + |
| 63 | +| 名稱 | 類型 | 描述 | |
| 64 | +|------|------|-------------| |
| 65 | +| `lastUpdate` | `\ḐateTimeInterface` | 數據的最後更新時間 | |
| 66 | +| `city->id` | `int` | 內部城市 ID | |
| 67 | +| `city->name` | `string` | 城市名稱 | |
| 68 | +| `city->country` | `string` | 城市國家代碼 | |
| 69 | +| `city->timezone` | `\DateTimeZone`|`null` | 城市時區 | |
| 70 | +| `city->lon` | `float` | 城市經度 | |
| 71 | +| `city->lat` | `float` | 城市緯度 | |
| 72 | + |
| 73 | +要檢索預報,請迭代該對象: |
| 74 | + |
| 75 | +```php |
| 76 | +foreach ($forecasts as $forecast) { |
| 77 | + // 執行操作 |
| 78 | +} |
| 79 | +``` |
| 80 | + |
| 81 | +### `$forecast` 物件 |
| 82 | + |
| 83 | +`$forecast` 是 `Cmfcmf\OpenWeatherMap\Forecast` 的實例,繼承自 `Cmfcmf\OpenWeatherMap\CurrentWeather` 對象。 |
| 84 | + |
| 85 | +| 名稱 | 類型 | 描述 | |
| 86 | +|------|------|-------------| |
| 87 | +| `time->day` | `\DateTimeInterface` | 預報日期 | |
| 88 | +| `time->from` | `\DateTimeInterface` | 預報的確切開始時間。對於 16 天/每日預報,這對應於 `time->day`。對於 5 天/3 小時預報,它對應於 3 小時窗口的開始。| |
| 89 | +| `time->to` | `\DateTimeInterface` | 預報的確切結束時間。對於 16 天/每日預報,這對應於 `time->day` 的 `23:59:59`。對於 5 天/3 小時預報,它對應於 3 小時窗口的結束。| |
| 90 | +| `...` | `...` | `CurrentWeather` 對象的所有其他屬性,如[此處](current-weather.md#weather-object)所述。| |
| 91 | + |
| 92 | +### 僅適用於 5 天/3 小時預報 |
| 93 | + |
| 94 | +| 名稱 | 類型 | 描述 | |
| 95 | +|------|------|-------------| |
| 96 | +| `temperature->now` | `Unit` | 注意:這應該命名為 `temperature->avg`,僅因向後兼容性而命名為 `temperature->now`!返回給定位置的平均溫度(例如,大城市可能有多個溫度測量站) | |
| 97 | +| `temperature->min` | `Unit` | 給定位置的最低溫度 | |
| 98 | +| `temperature->max` | `Unit` | 給定位置的最高溫度 | |
| 99 | + |
| 100 | +### 僅適用於 16 天/每日預報 |
| 101 | + |
| 102 | +| 名稱 | 類型 | 描述 | |
| 103 | +|------|------|-------------| |
| 104 | +| `temperature->morning` | `Unit` | 早晨的溫度 | |
| 105 | +| `temperature->now` | `Unit` | 白天的溫度 | |
| 106 | +| `temperature->evening` | `Unit` | 晚上的溫度 | |
| 107 | +| `temperature->night` | `Unit` | 夜晚的溫度 | |
| 108 | +| `temperature->min` | `Unit` | 白天的最低溫度 | |
| 109 | +| `temperature->max` | `Unit` | 白天的最高溫度 | |
0 commit comments