0

我需要使用 gmap V3 的地理编码对几个地址进行地理编码。首先我只尝试了一个并且它有效,但是当我传递我在 Json 中的几个地址时,它只显示第一个地址的坐标。

我试过这段代码:

$(document).ready(function() {
getcoords(datos);                      

});





 function getcoords(datos){

 Locgoogle = new google.maps.Geocoder();
 var dataJson = eval(datos);



        for(i=0;i<10;i++){  
            var dir=dataJson[i].dir ; 
            var id=dataJson[i].id   ;
            alert(dir);

            setTimeout(function() {GoogleCall(dir,id)}, 30000);

        }


 }




function GoogleCall(dir, id) {  

 Locgoogle.geocode({
        address: dir
    }, function(results,status) {
        if (status == google.maps.GeocoderStatus.OK) {
        var lat1 = results[0].geometry.location.lat();
        var lng1 = results[0].geometry.location.lng();
        $("#testDiv").append("latitudeGoogle:" + lat1 + "<p>longitudeGoogle:" + lng1 + "</p>");
        } else {
        alert("Geocode was not successful for the following reason: " + status);
        }
    });
 }

然后它没有给我错误,但它让我 11 倍于相同的坐标......

4

1 回答 1

0

两年前,谷歌对其 Maps API 引入了相当严格的政策。(准确地说是 V3,仍然有效的 V2 的策略更软。)Geocoding API 特别严格:

使用 Google 地理编码 API 的查询限制为每天 2,500 个地理定位请求。[...] 此外,我们强制执行请求速率限制以防止滥用服务。[...] 注意:地理编码 API 只能与谷歌地图一起使用;禁止在未在地图上显示的情况下对结果进行地理编码。

https://developers.google.com/maps/documentation/geocoding/#Limits

然而,谷歌有一个网页建议如何处理:

https://developers.google.com/maps/articles/geocodestrat

一种策略显然是缓存,正如一节中提到的那样。另一个正在等待下一个请求。

如果您必须执行如此多的请求并且负担不起商业包,也许您应该更改 API。我对 OSM API 有很好的体验:http ://wiki.openstreetmap.org/wiki/Nominatim

至少反向地理编码器对我来说非常有效。您可以使用 jQuery 的ajax()函数发出请求,并且可以自己进行适当的错误处理。尽管 OSM 有非常软的速率限制,但某些请求可能会由于服务器负载高等原因而失败。

于 2012-10-19T05:00:47.327 回答