Проблема в том, что запускается цикл for, который перебирает почтовые индексы:
for(var i = 0; i < postcodes.length; i++) {
Итак, я индекс в массиве почтовых индексов. Затем вы пытаетесь использовать этот индекс в объекте результатов, возвращаемых из запроса геокодирования для почтовых индексов [i]; но два массива не связаны. Переменные результаты являются результатами для почтовых индексов [i] и содержат все результаты поиска для этого почтового индекса. Следовательно, результаты [0] являются ближайшими результатами к одному почтовому индексу.
Я думаю, что вы хотите:
for(var i = 0, num = postcodes.length; i < num; i++) { // loop through postal codes
geocoder.geocode(
{
address: postcodes[i].innerHTML + ", uk"
},
function(results, status) {
if (status != google.maps.GeocoderStatus.OK) {
alert("Geocode was not successful for the following reason: " + status);
return false;
}
for (var i = 0, num = results.length; i < num; i++) { // loop through results
var marker = new google.maps.Marker({
position: results[i].geometry.location,
map: map,
icon: image
});
}
}
); // end geocode request
}
Если вы хотите показать только самые близкие результаты, пропустите второй цикл for и используйте результаты [0] вместо результатов [i].