vemcogroup / laravel-weather
Laravel的天气包,使用不同的提供商获取天气信息
Requires
- php: ^8.0
- ext-json: *
- ext-openssl: *
- firebase/php-jwt: ^6.4
- laravel/framework: ^9.0|^10.0
- spatie/geocoder: ^3.1
Requires (Dev)
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.0
README
描述
此包允许您从不同的天气提供商获取天气数据
安装
您可以通过composer安装此包
composer require vemcogroup/laravel-weather
包将自动注册其服务提供者。
要发布配置文件到 config/weather.php
,运行
php artisan vendor:publish --provider="Vemcogroup\Weather\WeatherServiceProvider"
默认配置可在此处查看 https://github.com/vemcogroup/laravel-weather/blob/master/config/weather.php
用法
目前此包支持以下天气服务,您可以将 WEATHER_PROVIDER
更改为以下之一
对于其他天气服务,请随意创建问题或发起Pull Request。
对于 手动
地理编码,您需要一个Google geocode API密钥。
在此获取它 https://developers.google.com/maps/documentation/geocoding/start 并将其插入到您的.env文件中。
GOOGLE_MAPS_GEOCODING_API_KEY=
请求
首先设置您的请求
$request = (new Vemcogroup\Weather\Request('1 Infinite Loop, Cupertino, CA 95014, USA'));
默认情况下,它将天气响应缓存24小时(86.400秒),这可以通过设置第二个参数来更改缓存超时(以秒为单位)
$request = (new Vemcogroup\Weather\Request('1 Infinite Loop, Cupertino, CA 95014, USA', 600));
单位
有两种可用的单位类型,默认为公制
公制(m):Vemcogroup\Weather\Providers\Provider::WEATHER_UNITS_METRIC
华氏度(f):Vemcogroup\Weather\Providers\Provider::WEATHER_UNITS_FAHRENHEIT
要更改响应单位,您可以执行以下操作
$request->withUnits(Vemcogroup\Weather\Providers\Provider::WEATHER_UNITS_FAHRENHEIT);
区域设置
要更改描述、摘要和其他文本中的区域设置,请执行以下操作
$request->withLocale('nl');
区域设置需要是您首选语言的2字母ISO代码。
日期 如果您需要选择日期来获取天气数据,例如获取历史数据,请按如下设置日期
$request->withDates([$date, ...]);
数组中的所有日期都需要是 Carbon
对象。
选项
如果您需要根据所选天气提供商设置任何其他选项,您可以执行以下操作
$request->withOption('name', 'value');
当前天气和预报
要获取当前天气和预报响应,您可以这样做
$weather = weather()->getForecast($request);
天气响应始终是一个 Collection
响应。
预报天数取决于天气服务提供商。
要获取当前天气数据
$weather->first()->getCurrently(); // DataPoint
要获取预报,您可以获取响应的第一个元素并按如下方式获取预报
$weather->first()->getDaily()->getData(); // array
然后通过数组遍历,每个元素代表预报中的每一天的 DataPoint
对象。
历史数据
要获取历史数据,您可以这样做
$weather = weather()->getHistorical($request);
请记住在请求上设置日期。
响应将是一个包含代表历史数据日期的键的集合。
响应
要查看响应数据,请查看源代码 /src/Objects