これが私のコードです。ポリゴンが作成し、情報ウィンドウが表示される「クリック」イベントリスナーのループがあります。
var GoogleMap,polyInfoWindow,polygon,getPath,getInfo;
function PolygonToMap()
{
GoogleMap = // map initialization //;
polyInfoWindow= // Infowindow initialization for polygons //;
// for loop of number polygons top create
{
getPath= // get path for new polygon // ;
polygon = new google.maps.Polygon({
paths: getPath,
strokeColor: "#0071bc",
strokeOpacity: 1,
strokeWeight: 2,
fillColor: "#000000",
fillOpacity: 0.1,
map:GoogleMap
});
getInfo= // get new data for new polygon // ;
google.maps.event.addListener(polygon,"click",function(event){
polyInfoWindow.setContent(getInfo);
polyInfoWindow.open(GoogleMap);
polyInfoWindow.setPosition(event.latLng);
});
}
}
ここでポリゴンはうまく生成されますが、すべてのポリゴンのポリゴンをクリックすると、表示される情報ウィンドウ データは同じです (ループ内の最後のポリゴン情報データのデータを含む情報ウィンドウ)。これは、各ポリゴン作成の for ループで、リスナーの infowindows データを追加するイベントで、すべてのポリゴン infowindw に対してオーバーライドされることを意味します。
したがって、私が必要とするのは、各ポリゴンがそのデータを情報ウィンドウに表示することです。つまり、各ポリゴン情報ウィンドウのデータを「クリック」します。