私はWebアプリケーションを作成しています。 私は配列からポリゴンを追加するGoogleマップを持っています。私はその配列をループし、マップにポリゴンを追加します。私はまた、問題はポリゴンがすべて正しく描画されているGoogle map:各ポリゴンにクリックリスナーを追加
これは私が
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);
});
}
をやっているポリゴンクリックにイベントリスナーを追加し、ポリゴン
の位置を警告する必要があります。しかし、問題は、ポリゴンをクリックしようとすると、常に最後のインデックスが表示されることです。追加された最後のポリゴンをクリックするようなものです。新しいリスナーを追加すると、古いリスナーを上書きすると思います。正しいインデックスを警告するために追加された各ポリゴンにリスナーを追加するにはどうすればよいですか?
ありがとうございました
が重複する可能性:いくつかのclosuresを使用v3) – geocodezip
この問題の本質は、同じ 'p'がすべての' functi on(event) 'はループblock_と同様に閉じます。したがって、 'p'はループの実行時に最後に生成されたポリゴンにバインドされます。私は 'polygonArray.forEach'を使って変数を区切ります。 –