wimski / laravel-nominatim
Nominatim 地理编码 API 客户端对 Laravel 的集成
v2.0.0
2022-03-07 16:06 UTC
Requires
- php: ^8.0
- laravel/framework: ^8.0 || ^9.0
- wimski/nominatim-geocoding-api-client: ^v1.1
Requires (Dev)
- mockery/mockery: ^1.5
- nunomaduro/larastan: ^2.0
- nyholm/psr7: ^1.5
- orchestra/testbench: ^7.0
- phpstan/phpstan-mockery: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- swisnl/php-http-fixture-client: ^3.0
This package is auto-updated.
Last update: 2024-09-07 21:53:37 UTC
README
Nominatim 地理编码 API 客户端对 Laravel 的集成
本包是 Nominatim 地理编码 API 客户端 的 Laravel 集成。
变更日志
使用方法
安装包
composer require wimski/laravel-nominatim
示例
use Wimski\Nominatim\Contracts\GeocoderServiceInterface; use Wimski\Nominatim\Objects\Coordinate; use Wimski\Nominatim\RequestParameters\ForwardGeocodingQueryRequestParameters; class MyClass { public function __construct( protected GeocoderServiceInterface $geocoder, ) { } public function queryCoordinate(string $query): Coordinate { $requestParameters = ForwardGeocodingQueryRequestParameters::make($query) ->addCountryCode('nl') ->includeAddressDetails(); $response = $this->geocoder->requestForwardGeocoding($request); return $response->getItems()[0]->getCoordinate(); } }
PSR HTTP
底层 Client
类默认使用 Discovery 来获取以下接口的实例
Psr\Http\Client\ClientInterface
Psr\Http\Message\RequestFactoryInterface
Psr\Http\Message\UriFactoryInterface
这意味着您需要将(一个)PSR 兼容包(们)添加到项目中。
如果您已经在项目中设置了特定的 HTTP 客户端配置,并且也希望将其用于 Nominatim 请求,可以通过扩展服务提供者来实现。
1. 禁用包发现
composer.json
"extra": { "laravel": { "dont-discover": [ "wimski/laravel-nominatim" ] } }
2. 扩展服务提供者
<?php namespace App\Providers; use Psr\Http\Client\ClientInterface as HttpClientInterface; use Psr\Http\Message\RequestFactoryInterface; use Psr\Http\Message\UriFactoryInterface; use Wimski\LaravelNominatim\Providers\NominatimServiceProvider as ServiceProvider; class NominatimServiceProvider extends ServiceProvider { protected function getHttpClient() : ?HttpClientInterface { // return your configured HTTP client here } protected function getRequestFactory() : ?RequestFactoryInterface { // return your configured request factory here } protected function getUriFactory() : ?UriFactoryInterface { // return your configured uri factory here } }
3. 包含扩展服务提供者
config/app.config
return [ // ... 'providers' => [ /* * Application Service Providers... */ App\Providers\NominatimServiceProvider::class, ], // ... ];
服务
以下提供者的服务目前可用
- Nominatim
NOMINATIM_SERVICE=nominatim
NOMINATIM_NOMINATIM_USER_AGENT=
(必需)NOMINATIM_NOMINATIM_EMAIL=
(必需)
- LocationIQ
NOMINATIM_SERVICE=location_iq
NOMINATIM_LOCATION_IQ_KEY=
(访问令牌,必需)
- 通用
NOMINATIM_SERVICE=generic
PHPUnit
composer run phpunit
PHPStan
composer run phpstan
致谢
许可
MIT 许可证(MIT)。请参阅 许可文件 了解更多信息。