Sto lavorando a un'applicazione web. Ho una mappa di google, dove aggiungo poligoni da un array. I loop attraverso quella matrice e aggiungere i poligoni alla mappa. Ho anche bisogno di aggiungere un listener di eventi al poligono clic e avvisare la posizione del poligonoGoogle map: aggiungi listener di clic per ogni poligono
Questo è quello che sto facendo
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);
});
}
Problema
I poligoni sono tutti disegnando correttamente . Tuttavia il problema è che quando provo a fare clic su un poligono mostra sempre l'ultimo indice. è come se fosse solo facendo clic sull'ultimo poligono aggiunto. Penso che quando aggiungo un nuovo ascoltatore, ha la precedenza su quello precedente. Come posso aggiungere un listener per ogni poligono aggiunto per avvisare l'indice corretto?
Grazie
possibile duplicato del [InfoWindow aperto per ogni V3 poligono Google Maps] (http://stackoverflow.com/questions/13017915/open-infowindow-for-each-polygon-google-maps- v3) – geocodezip
L'essenza di questo problema è che lo stesso 'p' è condiviso da tutti' functi su (evento) 'chiusure _come il blocco del ciclo_. Pertanto, 'p' è associato all'ultimo poligono creato quando viene eseguito il ciclo. Userei 'polygonArray.forEach' per separare le variabili. –