wimski/laravel-nominatim

Nominatim 地理编码 API 客户端对 Laravel 的集成

v2.0.0 2022-03-07 16:06 UTC

This package is auto-updated.

Last update: 2024-09-07 21:53:37 UTC


README

Latest Stable Version Coverage Status PHPUnit PHPStan

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)。请参阅 许可文件 了解更多信息。