Pracuję nad aplikacją internetową. Mam mapę google, gdzie dodaję wielokąty z tablicy. Przeszukuję tę tablicę i dodajemy wielokątów do mapy. Muszę również dodać detektor zdarzeń do wielokąta kliknięciem i zaalarmować pozycję wielokątaMapa Google: Dodaj detektor kliknięcia do każdego wielokąta
to co robię wszystko
map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);
//Loop on the polygonArray
for (var i = 0; i < polygonArray.length; i++) {
//Add the polygon
var p = new google.maps.Polygon({
paths: polygonArray[i],
strokeWeight: 0,
fillColor: '#FF0000',
fillOpacity: 0.6,
indexID: i
});
p.setMap(map);
//Add the click listener
google.maps.event.addListener(p, 'click', function (event) {
//alert the index of the polygon
alert(p.indexID);
});
}
Problem
Wielokąty rysowania poprawnie . Problem polega jednak na tym, że gdy próbuję kliknąć wielokąt, zawsze pokazuje on ostatni indeks. to tak, jakby kliknął tylko ostatni dodany wielokąt. Myślę, że kiedy dodaję nowego słuchacza, zastępuje on stary. Jak mogę dodać detektor dla każdego dodanego wielokąta, aby ostrzec właściwy indeks?
Dzięki
możliwe duplikat [Otwórz InfoWindow dla każdego V3 wielokąt google maps] (http://stackoverflow.com/questions/13017915/open-infowindow-for-each-polygon-google-maps- v3) – geocodezip
Istotą tego problemu jest to, że to samo 'p' jest wspólne dla wszystkich' functi on (event) 'closures _as oraz loop 'block_. W związku z tym 'p' jest związany z ostatnio utworzonym wielokątem podczas wykonywania pętli. Aby oddzielić zmienne użyłbym "polygonArray.forEach". –