マーカーのコレクションを反復処理し、カウンター変数を使用してイベントを関連付けようとしています。"When someone clicks a marker, show the infobox in position 'count'"
問題は、スクリプトが実行されると、カウント変数がすべてのクリック イベント サブスクライバー間で共有されることです。
つまり、マーカー A または B のクリックは同じ位置に配線され、同じ InfoBox を意味します。
var popups = [];
var count = 0;
@foreach (var marker in Model) {
<text>
/* Create Markers */
popups[count] = {};
popups[count]["marker"] = new google.maps.Marker({
map: themap
});
popups[count]["content"] = document.createElement("div");</div>';
popups[count]["infoboxoptions"] = {
boxClass: 'infobox-custom'
};
popups[count]["infobox"]= new InfoBox(popups[count]["infoboxoptions"]);
google.maps.event.addListener(popups[count]["marker"], "click", function (e) {
popups[count]["infobox"].open(themap, this);
/* PROBLEM IS HERE! ^ */
});
count++;
</text>
}
私は問題を理解していますが、それに取り組む方法がわかりません。Javascriptはクリックイベントごとに同じ変数を使用しており、反復ごとにインクリメントすると、クリックイベントごとにインクリメントされます。
助言がありますか?