【发布时间】:2017-01-12 14:45:28
【问题描述】:
因此,我正在测试一个脚本,该脚本将从数组中获取城市,然后使用地理编码找到它们的坐标,然后获取城市的 zip。好吧,这在一个城市可以正常工作,但是对于一个数组,geoCode 有一个查询限制,所以我试图用 setTimeout 绕过它,但是由于我对 js 还不是很了解,所以它不起作用。
<head>
<div id= "test"></div>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
function getLoc(){
var geocoder = new google.maps.Geocoder();
var address = ["Helsinki", "Paris", "London"];
for (var i = 0; i < address.length; i++) {
setTimeout(function(i){
geocoder.geocode( { 'address': address[i]}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var lat = results[0].geometry.location.lat();
var long = results[0].geometry.location.lng();
alert(long);
getZip(lat, long);
}
});
}, i* 1000);
}
}
getLoc();
function getZip(lat, long){
var latlng = new google.maps.LatLng(lat, long);
geocoder.geocode({
'latLng': latlng
}, function(results, status) {
address = results[0].address_components;
zipcode = address[address.length - 1].long_name;
document.getElementById("test").innerHTML = zipcode;
});
}
</script>
</head>
<body>
</body>
【问题讨论】:
-
我相信您对最后一个城市“伦敦”有所了解?
-
超时有效,但它没有通过第一个地理编码请求
-
我不知道您的用例或数据集的大小,但您可能需要考虑编写一个服务器端 cron 作业,在后台获取数据(使用适当的限制)并存储它在数据库中。 API 限制对于实时批处理来说太低了,并且在客户端上故意添加延迟会使访问者感到沮丧。
-
@Álvaro González 是的,我确实读过它,但我不会在任何公共场合使用它,我这样做只是为了让自己更轻松。我可能还是会为了好玩而尝试使用它。感谢您的建议
标签: javascript arrays settimeout geocoding