Laravel地理编码器始终返回空

时间:2017-09-23 03:35:55

标签: php laravel google-maps google-geocoder laravel-5.5

一般信息

  

套餐https://github.com/geocoder-php/GeocoderLaravel

     

Geocoder Laravel版本:^ 4.0

     

Laravel版本:5.5.11

     

PHP版:7.2

     

操作系统和版本:Windows 10

描述

我有这个简单的代码来试用这个包:

return app('geocoder')->geocode('Los Angeles, CA')->get();

但每次我跑的时候总会回来 [{},{},{},{},{}]

这是我的geocoder.php:

return [
    'cache-duration' => 0,
    'providers' => [
        Chain::class => [
            GoogleMaps::class => [
                'en-US',
                env('GOOGLE_MAPS_API_KEY'),
            ],
        ],
        GoogleMaps::class => [
            'us',
            env('GOOGLE_MAPS_API_KEY'),
        ],
    ],
    'adapter'  => Client::class,
];

已设置所有GOOGLE_MAPS_API_KEY。如果我运行dd(app('geocoder')->geocode('Los Angeles, CA')->get())。我可以看到结果,但是当我放return时它会让我空了。

4 个答案:

答案 0 :(得分:0)

source

中提到的那样使用
$geocodeData = Geocoder::geocode('Los Angeles, CA');
return $geocodeData;

答案 1 :(得分:0)

我确定你已经找到了解决方案,但只是为了加起来,你错过了locale的ENV变量:

return [
'cache-duration' => 0,
'providers' => [
    Chain::class => [
        GoogleMaps::class => [
            env('en', 'en-US'), //YOU HAD ONLY 'en-US' here.
            env('GOOGLE_MAPS_API_KEY'),
        ],
    ],
    GoogleMaps::class => [
        env('en', 'en-US'), //YOU HAD ONLY 'us' here.
        env('GOOGLE_MAPS_API_KEY'),
    ],
],
'adapter'  => Client::class,
];

希望这可以帮助任何人了解如何解决此错误!

答案 2 :(得分:0)

对于所有对此也感到绝望的人,如果遇到此问题,请确保已在Google项目中启用了GeoCoding API。

我希望图书馆会提供有关这种情况的反馈,但是我错了,因此,如果您遇到这种情况,这可能是问题的答案

答案 3 :(得分:0)

就我而言,事实证明我使用了一个限制用于 HTTP 的 API 密钥。因为 php 是服务器端,所以你必须使用一个限制 IP 的 API 密钥(不是 HTTP,这将用于客户端,即谷歌地图)。您可以通过创建用于服务器端请求的新 API KEY 在 google 云控制台中执行此操作。 (映射不同的密钥以用于谷歌地图/客户端请求)

相关问题