Mapa de Google: agregue click listener a cada polígono

Estoy trabajando en una aplicación web. Tengo un mapa de Google, donde agrego polígonos de una matriz. Recorro esa matriz y agrego los polígonos al mapa. También necesito agregar un detector de eventos al polígono, hacer clic y alertar la posición del polígono

Esto es lo que estoy haciendo

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

Los polígonos están todos dibujando correctamente. Sin embargo, el problema es que cuando intento hacer clic en un polígono, siempre muestra el último índice. Es como si solo estuviera haciendo clic en el último polígono agregado. Creo que cuando agrego un nuevo oyente, este reemplaza al anterior. ¿Cómo puedo agregar una escucha para cada polígono agregado para alertar el índice correcto?

Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta