このトピックがすでに何度も議論されていることは知っていますが、問題を解決できません。マップ上にいくつかのマーカーを表示し、それぞれにクリック イベントを追加したいと考えています。クリック イベントごとに、いくつかのデータを含む情報ウィンドウを開く必要があります。
ここに私が書いたものがあります; このコードはコンソールでエラーなしで実行され、すべてのマーカーが正しく表示されますが、クリック時に表示される情報ウィンドウは常にすべて同じです...
//Global variable
var info = new google.maps.InfoWindow();
//... some other functions
function createMarker(map)
{
for(i = 0 ; i < loadedMarkers.length ; i++) {
(function(i) {
value = loadedMarkers[i];
var pos = new google.maps.LatLng(value.Latitude, value.Longitude);
var mapOptions = {
zoom: 10,
center: pos,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var marker = new google.maps.Marker({
position: pos,
map: map,
title: value.Title
});
var MarkerContent = "<div class=\"marker\">" +
"<h2>"+ value.Title +"</h2>" +
"<p>"+ value.Text +"</p>" +
"</div>";
info.setOptions({
content: MarkerContent,
size: new google.maps.Size(50, 50),
position: pos
});
google.maps.event.addListener(marker, 'click', function () {
info.open(map, marker);
});
}
)(i);
}
}
いくつかの閉鎖の問題について聞いたので(私はJSが初めてです)、ロジックを(関数(i)...)に入れようとしましたが、すべての情報ウィンドウで常に同じコンテンツが表示されます。
誰かが私が間違っている場所を説明してもらえますか (そしてその理由は?)
どうもありがとうございます