Статус геокода Google Maps ПРЕВЫШАЕТ ЛИМИТ ЗАПРОСОВ


Я понимаю, что Google ограничивает количество запросов до 2500 в день... но ни за что на СВЕТЕ я не сделал так много запросов сегодня, и я просто продолжаю получать "OVER_QUERY_LIMIT"

$street_no = get_post_meta($prop->ID, 'street_no', true);
$street = get_post_meta($prop->ID, 'street', true);
$street_suffix = get_post_meta($prop->ID, 'street_suffix', true);

$addr = urlencode( $street_no." ".$street." ".$street_suffix." BC Canada" );
$url = 'http://maps.googleapis.com/maps/api/geocode/json?address='.$addr.'&sensor=true';
$json_result = json_decode(file_get_contents($url));

if ( $json_result->status === "OVER_QUERY_LIMIT" ) :
    sleep(2);
    $json_result = json_decode(file_get_contents($url));
endif;

Как вы можете видеть, если я получу статус OVER_QUERY_LIMIT, я скажу сценарию спать в течение 2 секунд, а затем продолжу... что, казалось, сработало в какой-то момент этим утром, но теперь я просто не могу даже получить геокодированный адрес.

Я в растерянности, не зная, что делать в этот момент... это делает мой приложение совершенно бесполезное.

Author: dcolumbus, 2013-02-09

5 answers

Квота распределяется между всеми пользователями общего IP-адреса, поэтому другие сайты на том же общем IP-адресе должны использовать геокодер Google.

Смотрите эту тему в группе Google Maps API v2 для получения дополнительной информации.

КСТАТИ, rackspace был предположением...

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

Веб-сервис теперь поддерживает ключ , другой вариант - использовать ключ в вашем запросе так что ты получаешь свою собственную квоту.

 4
Author: geocodezip, 2014-11-17 15:03:28

Может быть, вы отправляете слишком много запросов в секунду?

Проверьте эту тему:

ПРЕВЫШЕНИЕ_QUERY_LIMIT при использовании карт Google

 5
Author: Forhad Ahmed, 2017-05-23 11:58:52

Я столкнулся с аналогичной проблемой с моим java-приложением, размещенным на heroku. Способ, которым я обошел это, состоял в том, чтобы настроить экземпляр micro EC2 и установить на него Dante для запуска в качестве прокси-сервера. Затем я просто направляю свои запросы на gecoding через прокси-сервер и могу выполнять полные 2000 запросов в день. Очевидно, что стоит кэшировать результаты, чтобы минимизировать вызовы api. Экземпляр EC2 бесплатен в течение первого года, а после этого все еще не так дорог, и вы всегда можете использовать его не только для Данте.

Я подробно описал, как я это настроил здесь: Используя геокодирование Google от Heroku

 1
Author: Joe Pugh, 2013-05-11 22:00:11

У меня такая же проблема с вызовами интерфейса REST геокодирования с сервера на Heroku (размещенного на Amazon EC2)

Это можно было бы исправить, если бы я мог использовать свой ключ API Maps в запросе, и они отслеживали количество вызовов на ключ api.

Я согласен, что это серьезная проблема...

Bing, MapQuest и другие имеют бесплатные API геокодирования - вы (и я) должны посмотреть на них.

 0
Author: craic.com, 2013-03-04 21:50:55

Вы можете использовать размещенный прокси-сервис, такой как QuotaGuard, который остановит ваши запросы, поступающие с общего IP-адреса, чтобы Google не блокировал вас при использовании Rackspace/Heroku и т. Д.

 0
Author: Tim Williams, 2013-09-25 11:15:11