Вероятно, это связано с тем, что API Google регулирует количество запросов, которые вы можете сделать.Если вы спросите его о расположении адресов слишком быстро, он будет отказывать вам после первых нескольких запросов.
Я вижу, что вы пытались обойти это с помощью функции timer()
, но так, как вынаписано, что на самом деле это не задержит цикл while
(Javascript установит таймер, а затем успешно перейдет к следующей итерации цикла).Что вам нужно сделать, это перевести вызовы API в код, который вызывается setTimeout
, например:
function placeMarker(i) {
var address = markers[i].getAttribute("address"),
html = markers[i].getAttribute("html");
showAddress(map,geocoder,address,html);
if (++i <= 18) {
setTimeout(
function() {
placeMarker(i);
},
1000
);
}
}
placeMarker(0);