わかりました、これは私にとって 3 日間の問題でした。javascript クロージャーは私の得意分野ではありません。
一連のクリック可能なポリゴンでオーバーレイを適用した Google マップがあります。クリックしたポリゴンに応じて特定の機能を実行したいのですが、これは機能しています。問題は、そのポリゴンの郵便番号を含む情報ウィンドウを表示する関数がリスナーを操作する方法を理解できないことです。コードは次のとおりです。
for (x = 0; x < 50 && coordsObject.length > x; x++) { //Only draw 50 polygons at a time
...
//create zipcoords array
clickablePolygons.push(new google.maps.Polygon({
paths: zipCoords
, strokeColor: "#000"
, strokeOpacity: 1
, strokeWeight: 1
, fillColor: convertRatingToHex(rating)
, fillOpacity: 0.45
}));
infoWindow.push(
new google.maps.InfoWindow({
content: '<div id="gcontent">' + zip.toString() + '</div>'
})
);
//problem child
var theFunction = function(arguments, infowindow, map) {
var marker = new google.maps.Marker({
position: arguments[0].latLng
});
infowindow.open(map, marker);
};
google.maps.event.addListener(clickablePolygons[clickablePolygons.length - 1], 'click', function() {
theFunction(arguments, infoWindow[x], map); //:(
});
clickablePolygons[clickablePolygons.length - 1].setMap(map);
}
閉鎖の何が間違っていますか?