为Google GeoCoding API克服OVER_QUERY_LIMIT

时间:2015-10-02 06:49:09

标签: javascript google-maps google-maps-api-3 geocoding google-geocoding-api

我试图更好地了解如何在Google的Geocoder API中使用javascript。

以下是完整设置: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中搜索很多解决方案,例如thisthis,但我似乎无法正确地将它们应用于我的具体案例。有人可以指出我正确的方向,如何确切地设置超时,以确保我可以使用它来填充每一行(或者我是否做了一些根本错误的事情?)

谢谢!

0 个答案:

没有答案