Итак, я тестирую скрипт, что бы взять города из массива, затем найти их координаты с геокодом и после этого получить почтовый индекс города. Ну, это работает нормально с одним городом, но с массивом, geoCode имеет ограничение по запросу, поэтому я пытаюсь обойти его с помощью setTimeout, но, поскольку я еще не удивлен в js, он не работает. Обход ограничения на геокодирование с помощью setimeout
<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>
Я считаю, что вы видите широты и долго последний город «Лондон»? –
таймаут работает, но он не проходит первый запрос геокода – Skyhigh17
Я не знаю ваш случай использования или размер вашего набора данных, но вы можете подумать о написании задания cron на стороне сервера, которое извлекает данные в фоновом режиме (с соответствующий дроссель) и сохраняет его в базе данных. Ограничения API слишком низки для пакетной обработки в режиме реального времени, и добавление преднамеренной задержки на клиенте может привести к разочарованию посетителей. –