620: слишком много запросов с использованием Google Maps API - PullRequest
4 голосов
/ 11 октября 2010

Я использую API Карт Google Javascript V3 для обратного геокодирования множества мест (~ 100) на странице.Примерно через 10 или около того я начинаю получать ошибку 620: слишком много запросов.

Какой хороший способ отложить запросы и убедиться, что все они выполнены, если они асинхронные?

РЕДАКТИРОВАТЬ: Вот что у меня есть до сих пор.Он выполняет все запросы большую часть времени, но не повторяет неудачные запросы.

function replaceAddresses() {
    var delay = 0;
    $(".lat-lon-address").each(function(index) {
        window.setTimeout(queryGeocoder, delay, this);          
        delay += 1000;
    });
}

function queryGeocoder(elem) {
    geocoder.getLocations(new GLatLng(
        elem.getAttribute("lat"),
       elem.getAttribute("lon")), 
        function(response) {
            handleAddress(response, elem);
        }); 
}

function handleAddress(response, elem) {
    if (!response || response.Status.code != 200) {
        console.log("status code: " + response.Status.code)
    } else {
        place = response.Placemark[0];
        point = new GLatLng(place.Point.coordinates[1],
                        place.Point.coordinates[0]);

        elem.innerHTML = place.address;
    }
}

Ответы [ 2 ]

2 голосов
/ 08 декабря 2010

В прошлый раз, когда я проверял, вам разрешено только 2500 запросов геокодирования в день (на основе вашего ip).Этого должно быть достаточно для вас, но вам может потребоваться приобрести больший лимит, если вы используете большие наборы данных.

Советы

Храните геокодированную информацию локально, возможно, вбаза данных.Получите значения из базы данных вместо использования веб-службы Google.Так будет и быстрее.Если в местоположении отсутствует только географическая информация, следует ее геокодировать.

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

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

1 голос
/ 08 декабря 2010

Если вы получаете 620, вам, вероятно, нужно уменьшить или уменьшить количество запросов.

Соответствует ли ваша реализация условиям обслуживания? Я не вижу кода, который отображает эти результаты на карте (согласно ToS).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...