Вам действительно нужны эти переменные? Вы не можете сделать с этим:
var types = ['hospital','church','library','store'];
for(var i =0; i < types.length; i += 1) (new google.maps.Icon()).image = "icon" + i + ".png";
Изменения сделаны на основе комментария:
Шаблон имени значка изменен с icon + index + .png на icon + type + .png
и сохранение результатов цикла.
types = ['hospital','church','library','store'];
var landmarks = {};
// images names are of the form icon + type + .png
function createIcon(type)
{
var icon = new google.maps.Icon();
icon.image = "icon" + type + ".png";
return icon;
}
// mapping of landamarks by type and icon
for (var i = 0, len = types.length; i < len; i++)
{
landmarks[types[i]] = createIcon(types[i]);
}
результат:
{
больница: икона,
церковь: икона,
...
}
где icon - это значок карты Google, имеющий атрибут изображения, представляющий собой строку в виде «icon {type} .png», например iconhostpital.png, iconchurch.png.
Чтобы использовать значки, напишите landmarks.type
, где type - это одно из имен в массиве типов, например, landmarks.hospital
.
если имена изображений имеют вид значка + число + .png, а число для каждого типа эквивалентно его индексу в массиве, замените вызов createIcon (type [i]) для createIcon (i).