2015-12-17 1 views
0

Я хочу использовать BazingaGeocoderBundle, чтобы получить длинные и Шир из почтового кода https://github.com/geocoder-php/BazingaGeocoderBundle/blob/master/README.mdBazingaGeocoderBundle, Google Maps API геокодирования, URL не работает с геокодером, но работает непосредственно в браузере

Он работал, когда я использовал его без api_key , но, конечно же, вскоре перестали жаловаться на чрезмерную квоту.

1) Когда я зарегистрирован в «Google Maps API геокодирования», и добавил api_key к: C: \ Bitnami \ wampstack-5.5.30-0 \ sym_prog \ proj2_27 \ поставщика \ willdurand \ геокодер \ SRC \ Geocoder \ Поставщик \ GoogleMapsProvider.php

const ENDPOINT_URL_SSL = 'https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=key'; 
const ENDPOINT_URL = 'https://maps.googleapis.com/maps/api/geocode/json?address=%s&key='; // just in case there is something wrong with private $useSsl = true; setting 

Если я пытаюсь URL из браузера - я получаю результат со всеми координатами:

Если я пытаюсь использовать bazinga.geocoder, который работал отлично ранее (конечно, если я попробовать использовать его без ключа, теперь я получаю ошибку превышения квоты) .:

$addArr = $this->container 
       ->get('bazinga_geocoder.geocoder') 
       ->using('google_maps') 
       ->geocode($addrArr[$random_addr_index]); 

я получаю сообщение об ошибке в настоящее время:

[Geocoder\Exception\NoResultException] 
Could not execute query http://maps.googleapis.com/maps/api/geocode/json?ad 
dress=E16%201BH&key=AIzaSyB01WnF2o3M3GzUqn5UWZ_dVffssRrVXaQ 

Если я скопировать URL в браузере - это список результатов.

Согласно документации, Geocoder поставляется с библиотекой egeloen/http-adapter по умолчанию: https://github.com/geocoder-php/Geocoder#http-adapters.

2) Если я настроить адаптер в конфигурации и услуг, я получаю сообщение об ошибке: Invalid type for path " bazinga_geocoder.adapter ". Expected array, but got string.

C: \ Bitnami \ wampstack-5.5.30-0 \ sym_prog \ proj2_27 \ приложение \ Config \ config.yml

bazinga_geocoder:  
    providers: 
     google_maps: ~ 
    adapter: geocoder_adapter 

C: \ Bitnami \ wampstack-5.5.30-0 \ sym_prog \ proj2_27 \ app \ config \ services.yml

services: 
    geocoder_adapter: 
     class: Geocoder\HttpAdapter\CurlHttpAdapter 
     public: false 

Где моя ошибка? Что касается адаптера? Что еще мне нужно изменить в vendor \ willdurand \ geocoder \ src \ Geocoder \ Provider \ GoogleMapsProvider.php?

3) Как правильно настроить использование других предлагаемых адаптеров?

* `BuzzHttpAdapter` to use [Buzz](https://github.com/kriswallsmith/Buzz), a lightweight PHP 5.3 library for issuing HTTP requests; 
* `GuzzleHttpAdapter` to use [Guzzle](https://github.com/guzzle/guzzle), PHP 5.3+ HTTP client and framework for building RESTful web service clients; 
* `SocketHttpAdapter` to use a [socket](http://www.php.net/manual/function.fsockopen.php); 
* `ZendHttpAdapter` to use [Zend Http Client](http://framework.zend.com/manual/2.0/en/modules/zend.http.client.html). 

ответ

1

Это когда ваша информация о адресе недействительна.

В вашем случае вашей информации адрес:

http://maps.googleapis.com/maps/api/geocode/json?address=E16%201BH 

Где "адрес = E16% 201BH" фактический адрес, URL закодированы строкой. Как вы можете видеть, это недействительный адрес.

Это должно быть что-то вроде этого:

http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway%2C+Mountain+View%2C+CA 

Чтобы сделать код более на будущее, вы должны положить попробовать поймать вокруг вашей функции кодирования.

try { 
    $addArr = $this->container 
       ->get('bazinga_geocoder.geocoder') 
       ->using('google_maps') 
       ->geocode($addrArr[$random_addr_index]); 
} catch (Exception $exception) { 
    $addArr = false; 
} 
Смежные вопросы