geocoder-php/GeocoderLaravel

No provider registered error

didwiz opened this issue · 3 comments

General Information

GeocoderLaravel Version: "^4.0"
Laravel Version: 5.6.4
PHP Version: 7.0
Operating System and Version: ubuntu 16.04

Issue Description

On trying to running this line $geocoder->reverse($lat, $lon)->toJson(); , i get the no provider registered error..
I have the config file published with the default providers listed, the geocoder.php file, with my config file matching this here: https://github.com/geocoder-php/GeocoderLaravel/blob/master/config/geocoder.php
I cant get pass this point.
Thanks for your help.

Steps to Replicate

I followed the instructions in the repo readme to install geocoder into my project.

Stack Trace

Geocoder\Exception\ProviderNotRegistered · No provider registered.

(1/1) ProviderNotRegisteredNo provider registered.
--
in ProviderNotRegistered.php line 35
at ProviderNotRegistered::noProviderRegistered()in ProviderAggregator.php line 184
at ProviderAggregator::getProvider(object(ReverseQuery), array(), null)
at call_user_func('Geocoder\\ProviderAggregator::getProvider', object(ReverseQuery), array(), null)in ProviderAggregator.php line 79
at ProviderAggregator->reverseQuery(object(ReverseQuery))in ProviderAggregator.php line 105
at ProviderAggregator->reverse(10.53185, 7.4294700000000002)in ProviderAndDumperAggregator.php line 140
at ProviderAndDumperAggregator->Geocoder\Laravel\{closure}()in Repository.php line 327
at Repository->remember('geocoder-1053185-742947', 9999999, object(Closure))in CacheManager.php line 304
at CacheManager->__call('remember', array('geocoder-1053185-742947', 9999999, object(Closure)))in ProviderAndDumperAggregator.php line 141
at ProviderAndDumperAggregator->reverse(10.53185, 7.4294700000000002)in UserController.php line 1302
at UserController->updateUserProfile(object(ProviderAndDumperAggregator))
at call_user_func_array(array(object(UserController), 'updateUserProfile'), array(object(ProviderAndDumperAggregator)))in Controller.php line 54
at Controller->callAction('updateUserProfile', array(object(ProviderAndDumperAggregator)))in ControllerDispatcher.php line 45
at ControllerDispatcher->dispatch(object(Route), object(UserController), 'updateUserProfile')in Route.php line 212
at Route->runController()in Route.php line 169
at Route->run()in Router.php line 658
at Router->Illuminate\Routing\{closure}(object(Request))in Pipeline.php line 30
at Pipeline->Illuminate\Routing\{closure}(object(Request))in SanitizeInput.php line 21
at SanitizeInput->handle(object(Request), object(Closure))in Pipeline.php line 149
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))in Authenticate.php line 43
at Authenticate->handle(object(Request), object(Closure), 'api')in Pipeline.php line 149
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))in Pipeline.php line 102
at Pipeline->then(object(Closure))in Router.php line 660
at Router->runRouteWithinStack(object(Route), object(Request))in Router.php line 635
at Router->runRoute(object(Request), object(Route))in Router.php line 601
at Router->dispatchToRoute(object(Request))in Router.php line 590
at Router->dispatch(object(Request))in Kernel.php line 176
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))in Pipeline.php line 30
at Pipeline->Illuminate\Routing\{closure}(object(Request))in CheckActiveAccount.php line 41
at CheckActiveAccount->handle(object(Request), object(Closure))in Pipeline.php line 149
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))in HandleCors.php line 36
at HandleCors->handle(object(Request), object(Closure))in Pipeline.php line 149
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure))in Pipeline.php line 149
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure))in Pipeline.php line 149
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))in ValidatePostSize.php line 27
at ValidatePostSize->handle(object(Request), object(Closure))in Pipeline.php line 149
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure))in Pipeline.php line 149
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))in Pipeline.php line 102
at Pipeline->then(object(Closure))in Kernel.php line 151
at Kernel->sendRequestThroughRouter(object(Request))in Kernel.php line 116
at Kernel->handle(object(Request))in index.php line 53

You need to register the provider:

app/config.php

$app->register(Geocoder\Laravel\Providers\GeocoderService::class);

No provider registered error
sir same issue .
please give me valid solution

In order to do reverse geocoding, you need to have a compatible geocoder provider configured, like GeoIP2, for example:

<?php

/**
 * This file is part of the GeocoderLaravel library.
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

use Geocoder\Provider\BingMaps\BingMaps;
use Geocoder\Provider\Chain\Chain;
use Geocoder\Provider\GeoIP2\GeoIP2;
use Geocoder\Provider\GeoPlugin\GeoPlugin;
use Geocoder\Provider\GoogleMaps\GoogleMaps;
use GeoIp2\Database\Reader;
use Http\Client\Curl\Client;

return [
    'cache' => [
        'store' => null,
        'duration' => 999999999,
    ],
    'providers' => [
        Chain::class => [
            GeoIP2::class => [],
            GoogleMaps::class => [
                'en-US',
                env('GOOGLE_MAPS_API_KEY'),
            ],
            GeoPlugin::class  => [],
        ],
        BingMaps::class => [
            'en-US',
            env('BING_MAPS_API_KEY'),
        ],
        GoogleMaps::class => [
            'us',
            env('GOOGLE_MAPS_API_KEY'),
        ],
    ],
    'adapter'  => Client::class,
    // 'reader' => new Reader(__DIR__ . '/../resources/assets/GeoLite2-City.mmdb'),
    "reader" => [
        Reader::class => [
            __DIR__ . '/../resources/assets/GeoLite2-City.mmdb',
        ],
    ],
];

Closing this for now, as I am unable to replicate the problem.