我需要使用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倍相同的坐标...
两年前,Google已向其MAPS API引入了非常严格的政策。(确切地说,V3的策略 - 仍然有效-V2柔软。)地理编码API特别严格:
使用Google Geocoding API的查询限制为2,500 地理位置请求每天。[...]此外,我们强制执行一个请求限制以防止滥用服务。[...] 注意:地理编码API只能与Google地图结合使用;地理编码结果不禁止在地图上显示它们。
https://developers.google.com/maps/documentation/geocoding/#limits
Google有一个网页,其中包含建议如何处理:
https://developers.google.com/maps/articles/geocodestrat
一个策略显然是在缓存,也是一个部分中提到的。另一个正在等到下一个请求。
,如果您必须执行许多请求并且无法负担商业套餐,也许应该更改API。我在OSM API中获得了很好的经验:http://wiki.openstreetmap.org/wiki/nominatim
至少反向地理编码器对我来说非常好。您可以使用jQuery的ajax()
函数进行请求,并可以执行正确的错误处理。尽管OSM具有非常柔软的速率限制,但由于较高的服务器加载等,某些请求可能会失败。