Ciao a tutti!
Sto programmando un piccolo tool di visualizzazione di dati di ghiacciai su google map.
I dati per ogni ghiacciaio sono contenuti in alcuni files xml. Usando jQuery faccio il parsing dei files e salvo i valori in un oggetto (json, glacier[shortName]{...}) in modo da potere in seguito utilizzare i valori in tutto lo script. Il problema è che gli oggetti risultano essere definiti solo nella funzione di parsing e non all'esterno. Evidentemente non basta dichiarare un oggetto con var glacier = {};
Come posso risolvere il problema?
Grazie in anticipo!
codice:
var map,
mapOptions = {
zoom: 9,
center: new google.maps.LatLng(46.509736, 8.305664),
mapTypeId: google.maps.MapTypeId.SATELLITE,
streetViewControl: false,
};
var glacier = {};
var xmlGlacier= new Array();
xmlGlacier[0]= "brunni";
xmlGlacier[1]= "damma";
xmlGlacier[2]= "griess";
xmlGlacier[3]= "huefi";
xmlGlacier[4]= "kehlen";
xmlGlacier[5]= "rotfirn";
xmlGlacier[6]= "sanktanna";
xmlGlacier[7]= "tiefen";
xmlGlacier[8]= "wallenbur";
function parseXml(xml){
name = $(xml).find("Name").text();
shortName = $(xml).find("Glacier").attr("short");
lat = parseFloat($(xml).find("Lat").text());
lon = parseFloat($(xml).find("Lon").text());
lengths = new Array();
length1973 = parseFloat(($(xml).find("Length").text())*1000);
firstLength = length1973 - parseFloat($(xml).find("Observation[year=1973] CumulativeLengthChange").text());
$(xml).find("Observation").each( function(){
if($(this).attr("year")>="1960"){lengths.push(parseFloat(firstLength + parseFloat($(this).find("CumulativeLengthChange").text())));}
});
glacier[shortName] = {
name: name,
shortName: shortName,
center: new google.maps.LatLng(lat, lon),
lengths: lengths,
}
}
$(document).ready(function(){
for(var i = 0; i < xmlGlacier.length; i++){
$.ajax({
type: "GET",
url: "glaciers_data/" + xmlGlacier[i]+".xml",
dataType: "xml",
success: parseXml
});
}
map = new google.maps.Map(document.getElementById("map"), mapOptions);
});