Поставщики геокодеров Laravel

Я хотел реализовать провайдера GeoIP2 в пакете геокодера Laravel вместе с существующим пакетом GoogleMaps, поэтому я добавил это в свой конфигурационный файл для геокодера:

'providers' => [
    Chain::class => [
        \Geocoder\Provider\GeoIP2\GeoIP2::class => [],
        GoogleMaps::class => [
            env('GOOGLE_MAPS_LOCALE', 'en-US'),
            env('GOOGLE_MAPS_API_KEY'),
        ],
        GeoPlugin::class  => [],
    ],
],

Но когда я пытаюсь вызвать метод геокодирования, я получаю сообщение об ошибке:

Ошибка типа: Аргумент 1, передаваемый в Geocoder\Provider\GeoIP2\GeoIP2::__construct(), должен быть экземпляром Geocoder\Provider\GeoIP2\GeoIP2Adapter, экземпляр Http\Client\Curl\Client

Поэтому я решил, что адаптер должен быть изменен в конфигурации, и я сделал это:

'adapter'  => \Geocoder\Provider\GeoIP2\GeoIP2Adapter::class,

Но теперь моя первая проблема, даже если это сработает, как он может поддерживать работу поставщика карт Google?

И вторая проблема заключается в том, что это на самом деле также ошибки:

Ошибка типа: Аргумент 1, переданный в Geocoder\Provider\GeoIP2\GeoIP2Adapter::__construct(), должен быть экземпляром GeoIp2 \ ProviderInterface, ни один из которых не задан, вызывается в /home/.../vendor/toin0u/geocoder-laravel/src/ProviderAndDumperAggregator.php в строке 231

Вся идея заключалась в том, чтобы иметь первичный сервис геолокации, который будет получать данные из GeoLite2-City.mmdb файл и вернуться к Google Maps, если он не находит его. У кого-нибудь была похожая проблема?

Я звоню вот так:

app('geocoder')->geocode('185.18.63.69')

0 ответов

Другие вопросы по тегам