Mapa i znaczniki wyświetlają się poprawnie.
Używam w innym miejscu tego samego kodu i działa wszystko bez problemu. Porównałem wszystko i nie mam pojęcia czemu to nie działa. Firebug nie zgłasza żadnych błędów:
<script type="text/javascript"> var barr = [ ]; var lastI; var map; //var infoWindow = new google.maps.InfoWindow(); function initialize() { var myOptions = { center: new google.maps.LatLng(53.7655437, 20.4687073), zoom: 11, mapTypeId: google.maps.MapTypeId.ROADMAP, sensor: 'true' }; var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions); var xlat = 53.741887; var xlng = 20.5142676; barr[0] = new Object; var latlng = new google.maps.LatLng(xlat, xlng); var marker = new google.maps.Marker({ position:latlng, visible: true, clickable: true, map: map }); barr[0].marker = marker; barr[0].infoWindow = new google.maps.InfoWindow({ content: barr[0].html }); barr[0].listener = makeClosure(0, barr[0].marker); var xlat = 53.7635826; var xlng = 20.423147; barr[1] = new Object; var mImage = 'http://maps.google.com/mapfiles/kml/pal5/icon51.png'; var latlng = new google.maps.LatLng(xlat, xlng); var marker = new google.maps.Marker({ icon: mImage, position:latlng, visible: true, clickable: true, map: map //icon: 'http://maps.google.com/mapfiles/kml/pal5/icon51s.png' }); barr[1].marker = marker; barr[1].html = "cos"; barr[1].infoWindow = new google.maps.InfoWindow({ content: barr[1].html }); barr[1].listener = makeClosure(1, barr[1].marker); var xlat = 53.7892004; var xlng = 20.4927232; barr[2] = new Object; var mImage = 'http://maps.google.com/mapfiles/kml/pal5/icon51.png'; var latlng = new google.maps.LatLng(xlat, xlng); var marker = new google.maps.Marker({ icon: mImage, position:latlng, visible: true, clickable: true, map: map //icon: 'http://maps.google.com/mapfiles/kml/pal5/icon51s.png' }); barr[2].marker = marker; barr[2].html = "cos"; barr[2].infoWindow = new google.maps.InfoWindow({ content: barr[2].html }); barr[2].listener = makeClosure(2, barr[2].marker); } function makeClosure(i, marker) { var listener = google.maps.event.addListener(marker, 'click', function() { openInfoWindow(i) ; // <-- this is the key to making it work }); return listener ; } // Open the infoWindow - called from the closure... function openInfoWindow(i) { if ( typeof(lastI) == 'number' && typeof(barr[lastI].infoWindow) == 'object' ) { barr[lastI].infoWindow.close() ; } lastI = i ; // alert(i); barr[i].infoWindow.open(map,barr[i].marker); } </script>