Google Map: Fügen Sie jedem Polygon einen Klicklistener hinzu

Ich arbeite an einer Webapplikation. Ich habe eine Google Map, in der ich Polygone aus einem Array hinzufüge. Ich durchlaufe dieses Array und füge die Polygone zur Karte hinzu. Ich muss dem Polygonklick auch einen Ereignis-Listener hinzufügen und die Position des Polygons benachrichtigen

Das ist was ich tue

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

Die Polygone werden alle korrekt gezeichnet. Das Problem ist jedoch, dass beim Versuch, auf ein Polygon zu klicken, immer der letzte Index angezeigt wird. Es ist, als würde man nur auf das zuletzt hinzugefügte Polygon klicken. Ich denke, wenn ich einen neuen Listener hinzufüge, überschreibt er den alten. Wie kann ich für jedes hinzugefügte Polygon einen Listener hinzufügen, um den richtigen Index zu ermitteln?

Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage