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