Salve ragazzi, spero di non aver usato un titolo troppo vago, io ho un problema che mi sta facendo impazzire e non riesco proprio a venirne a capo.

Ho trovato in giro un codice per creare dei marker persnalizzati sulla mappa di google e l'ho un po' modificato a mio favore, il blocco incriminato è il seguente:

codice:
function get_position(position)
     {
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;
     
        var miaPosizione = new google.maps.LatLng(latitude,longitude);
     
        var settings = {
        zoom: 15,
        center: miaPosizione,
        mapTypeControl: true,
        mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
        navigationControl: true,
        navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
        mapTypeId: google.maps.MapTypeId.ROADMAP};
     
        map = new google.maps.Map(document.getElementById("map-canvas", get_error), settings);

        if(noPosition == false) {
            marker = new google.maps.Marker({
                 position: miaPosizione,
                 map: map,
                 title: "La tua posizione"
              });
        }


        $.post('{{URL::action('NegozioController@postAjaxJsonNegozi')}}', {}, function(data){
             
            arr = JSON.parse(data);

            var markers = [];
            var box = [];
            var info = [];
            
            var a = 0;
            for(i=0; i<arr.length; i++) {
                box[i] = "<div id='box-"+i+"'><p><b>"+arr[i].nome+"</b></p><p><b></b>"+arr[i].descrizione+"</p></div>";

                
                info[i] = new google.maps.InfoWindow({
                    content: box[i]
                });
            
                markers[i] = new ImageMarker({
                     map: map,
                     position: new google.maps.LatLng(arr[i].lat, arr[i].lng),
                     image: '',
                     events: {
                         click: function( event,a ) {
                           
                             info[i].open(map, markers[i]);
                            
                         }
                     }
                 });
            }
            
            
        }); 
        
     }
Il problema si trova nell'ultimo for, più precisamente qui:
codice:
markers[i] = new ImageMarker({
                     map: map,
                     position: new google.maps.LatLng(arr[i].lat, arr[i].lng),
                     image: '',
                     events: {
                         click: function( event,a ) {
                      //       alert( 'Clicked marker' );
                                
                                
                             info[i].open(map, markers[i]);
                            
                                
                         }
                     }
                 });
Il problema che riscontro è che quando clicco sul marker mi dice che l'oggetto info[i] non è definito, dato che lui non considera info[0], info[1], ecc per tutti quelli creati, ma info[i] con i uguale al valore attuale dopo che il ciclo si è concluso, quindi il numero complessivo di oggetti info + 1

Mentre se lo sostituisco ad esempio con info[0].open(map, markers[0]); quando clicco sul primo marker funziona perfettamente, quindi sono certoche il problema sia quello.

Spero che riusciate ad aiutarmi perchè si trtta di uan cosa importante e ci sto sbattendo da un pomeriggio sano la testa.

Ringrazio anticipatamente.
Un saluto a tutti