我已經使用一個變量中的數組創建了一組標記。我想爲每個標記添加一個「click」事件偵聽器,該標記鏈接到爲數組中的每個項目指定的url。下面的功能完美的作品,除了它在陣列中分配的最後一個URL來的所有標記的(而不是分配的第一個URL的第一標誌,第二個網址的第二個標誌等)。其餘數據被適當分配。我知道解決方案涉及循環中的閉包,但我無法弄清楚如何正確地創建它。任何幫助將非常感激。在Google Maps v3中使用一個變量將事件監聽器附加到一組標記 - 循環,關閉
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
你應該移動你的問題的部分「理解了它」來回答,並接受它。這樣,其他人可以看到這是一個回答問題。 –