Подтвердить что ты не робот

OVER_QUERY_LIMIT при использовании карт Google

У меня проблема при использовании карт google из моего приложения, когда я отправляю более 10 запросов в цикле из java script, я получаю исключение как OVER_QUERY_LIMIT из службы геокодирования. есть ли способ, которым я могу избавиться от этого, я попытался дать некоторые задержки времени, используя setInterval() и т.д.. но не работает.

4b9b3361

Ответ 2

Геокодирование в JavaScript API ограничено по скорости. Когда вы впервые загружаете API, вы можете отправить 10 запросов для геокодирования адресов или 5 для обратного (latlng) геокодирования, прежде чем вы получите ответ OVER_QUERY_LIMIT. Когда вы это сделаете, используйте экспоненциальное отключение", чтобы задержать ваши запросы.

Вы также можете присоединиться к обсуждению в Проблема 4805 (gmaps-api-issues).

Ответ 3

Если вы используете автозаполнение, попробуйте использовать "API автозаполнения мест" . (Несмотря на то, что это не совсем то, что он спросил, я полагаю, что многие придут сюда из этого вопроса)

Ответ 4

Имейте список API и используйте их случайным образом для каждого запроса. Например, в python

как клавиши = [key1, key1, key3....]

location = Geocoder(random.choice(keys)).geocode(address) 

или

location = Geocoder(random.choice(keys)).reverse_geocode(Lat,Long)

В соответствии с вашими требованиями

Ответ 5

Мы можем использовать очередь AJAX.

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

Создайте несколько ключей геокодирования, сохраняйте их в массиве и используйте его случайным образом для каждого запроса ajax.

Здесь я загрузил 2200 маркеров. Требуется около 1 минуты, чтобы добавить 2200 мест.

<https://jsfiddle.net/suchg/qm1pqunz/11/>

Ответ 6

Сначала прочитайте эту статью. https://developers.google.com/maps/premium/previous-licenses/articles/usage-limits

Если вы отправили много запросов в одну секунду, используйте метод задержки.

function sleep(milliSeconds) {
  var startTime = new Date().getTime();
  while (new Date().getTime() < startTime + milliSeconds);
}

вызовите этот метод в вашей структуре цикла. сон (2200);