Поставщики геокодеров 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')