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:
Il problema si trova nell'ultimo for, più precisamente qui: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 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 + 1codice: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]); } } });
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![]()

Rispondi quotando