2012-06-27 28 views
5

GMaps v3 Markers addListener Vấn đềGMaps v3 Markers addListener Bắt luôn chỉ số biến cuối cùng trong vòng lặp for

Tôi đang cố gắng để thêm mouseover/mouseout lý sự kiện để đánh dấu của tôi, nhưng tôi nhận được allways giá trị cuối cùng của for loop Trong tất cả các sự kiện, có vẻ như để có được giá trị cuối cùng của thay cho dòng. Đây là mã của tôi

for(mark in data) { 
    markers[mark] = new google.maps.Marker({ 
       position: new google.maps.LatLng(data[mark].lat,data[mark].lng), map: map, 
      }); 
google.maps.event.addListener(markers[mark], "mouseover", function() { 
       alert(mark); 
      }); 
      google.maps.event.addListener(markers[mark], "mouseout", function() { 
       alert(mark); 
      }); 
     } 

Kết quả là một cảnh báo trên chuột lên/ra với cùng một giá trị cho tất cả 10 cột mốc và tôi đã mong id điểm đánh dấu trên mỗi cảnh báo.

nhờ Trân

Trả lời

10

Vấn đề bạn gặp phải là giá trị của dấu ấn mang tính toàn cầu và được thiết lập để trái giá trị cuối cùng trong vòng lặp. Sự cố có thể được khắc phục bằng chức năng đóng. Tôi nghĩ rằng điều này sẽ hoạt động (không được kiểm tra):

function createMarker(latlng, id) 
{ 
    var marker= new google.maps.Marker({ 
      position: latlng, map: map, 
      }); 
    google.maps.event.addListener(marker, "mouseover", function() { 
      alert(id); 
      }); 
    google.maps.event.addListener(marker, "mouseout", function() { 
      alert(id); 
      }); 
    return marker; 
} 
for(mark in data) { 
    markers[mark] = createMarker(new google.maps.LatLng(data[mark].lat,data[mark].lng), 
           mark); 
} 
+0

Bạn hoàn toàn đúng! – Santiago

Các vấn đề liên quan