Преодоление OVER_QUERY_LIMIT для Google GeoCoding API

Я пытаюсь лучше понять, как использовать javascript с Google Geocoder API.

Вот полная настройка: http://jsfiddle.net/25gybgds/

$("#btn").click(function () {
var geocoder = new google.maps.Geocoder();
var finaltable = document.getElementById("datatable");

alert("Row count: " + count);

var i;

for (i = 1; i < 20; i++) {


    var fullAddress = finaltable.rows[i].cells[0].innerHTML + ", " + finaltable.rows[i].cells[1].innerHTML;

    getLatLong(fullAddress, i);


}

function getLatLong(addr, llrow) {

    var latCell = finaltable.rows[llrow].cells[2];
    var lonCell = finaltable.rows[llrow].cells[3];

    geocoder.geocode({
        'address': addr
    }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {

            latCell.innerHTML = String(results[0].geometry.location.lat());
            lonCell.innerHTML = String(results[0].geometry.location.lng());

        } else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT){
            latCell.innerHTML = "OVER";
            lonCell.innerHTML = "OVER";

        }else {
            alert("Something got wrong " + status);
            latCell.innerHTML = "ERR";
            lonCell.innerHTML = "ERR";
        }
    });
}

});

Я пытался использовать функцию setTimeout() безрезультатно, и я продолжаю получать ошибку OVER_QUERY_LIMIT (моя полная таблица составляет 319 строк, но даже выполнение 20 уже вызовет эту проблему).

я пытался сделать

setTimeout(geocoder.geocode({ // rest of code here}), 3000);

и все равно как-то не дает мне это сделать.

Я пробовал искать множество решений в Stackoverflow, например это и this, но я не могу правильно применить их к моему конкретному случаю. Может ли кто-нибудь указать мне правильное направление, как точно установить тайм-аут для этого, чтобы я мог использовать это для заполнения каждой отдельной строки (или делаю ли я что-то принципиально неправильное?)

Спасибо!


comment
Используйте setInterval вместо setTimeout.   -  person MrUpsidown    schedule 02.10.2015
comment
Привет @MrUpsidown, как мне использовать setInterval для цикла for в этом случае?   -  person lyk    schedule 02.10.2015
comment
Ваша реализация setTimeout неверна, 1. вы должны предоставить функцию, а не вызов функции в качестве первого аргумента. 2. вы должны увеличить задержку Фиксированная скрипка: jsfiddle.net/25gybgds/6   -  person Dr.Molle    schedule 02.10.2015
comment
@Dr.Molle, привет, большое спасибо за помощь! если вы хотите опубликовать это как ответ, я могу принять это. еще раз спасибо!   -  person lyk    schedule 06.10.2015