Я создал набор маркеров, используя массив в одной переменной.Я хотел бы добавить прослушиватель события «click» для каждого маркера, который ссылается на URL, который указан для каждого элемента в массиве.Следующая функция прекрасно работает, за исключением того, что она присваивает последний URL в массиве всем маркерам (вместо назначения первого URL-адреса первому маркеру и второго URL-адреса второму маркеру и т. Д.)Остальные данные назначаются соответствующим образом.Я знаю, что решение включает замыкание в цикле, но я не могу понять, как правильно его создать.Любая помощь будет высоко ценится.
var tours = [
['Title 1', 35.22024012078826, -80.81088066101074, 'tour/1'],
['Title 2', 35.20376057077245, -80.84718704223633, 'tour/2']
];
setTourMarkers(map, tours);
function setTourMarkers(map, locations) {
var tourImage = new google.maps.MarkerImage('http://www.tours.com/images/camera-icon.png',
new google.maps.Size(27, 22),
new google.maps.Point(0,0),
new google.maps.Point(14, 11));
var tourShape = {
coord: [1, 1, 1, 27, 27, 22, 22 , 1],
type: 'poly'
};
for (var i = 0; i < locations.length; i++) {
var tour = locations[i];
var tourLatLng = new google.maps.LatLng(tour[1], tour[2]);
var marker = new google.maps.Marker({
position: tourLatLng,
map: map,
icon: tourImage,
shape: tourShape,
title: tour[0]
}); //End new google.maps.Marker
google.maps.event.addListener(marker, 'click', function() {
window.location.href = "http://www.tours.com/" + tour[3];
}); //End google.maps.event.addListener
}; // End "for" statement ***************
}; // End setTourMarkers function