2017-01-13 4 views
0

im Lesen eine Anwendung mit der P5.JS Bibliothek erstellen, die eine dinamic Karte mit jedem Land durch sein aktuelles Wetter gefärbt zeigt, ist es das, was ich bisher:JS - Fehler: Kann nicht Eigentum ‚lat‘ undefinierten

var colors = []; 
var paises = ["AR", "BR", "CL", "CO", "GY", "PE", "PY", "UY", "BO", "VE", "EC", "GF", "SR"]; 

var datacoor; 

var url1 = "https://chart.googleapis.com/chart?"; 
var arg1 = "cht=map&chs=600x500&chld=" 
var arg2 = "&chco="; 
//var URL = url1+arguments; 

var img; 

function setup() { 
    createCanvas(500, 600); 
    img = createImg("https://chart.googleapis.com/chart?cht=map&chs=600x500&chld=AR|BR|CL|CO|GY|PE|PY|UY|BO|VE|EC|GF|SR&chco=B3BCC0|5781AE"); 
    img.hide(); 

    for (var a = 0; a < paises.length; a++){ 
    colors.append(colors, color(getColor(paises[a]))); 

    } 
} 

function draw () { 
    background(255); 

    noStroke(); 
    fill(30); 
    textSize(35); 
    //text("zz ", 15, 45); 

    if (img) { 
    imageMode(CENTER); 
    image(img, width/2, height/2); 
    } 
} 

function onData (response) { 
    datacoor = response; 
    console.log(datacoor); 
} 

function getColor (loc) { 
    var pais = loc; 
    var lat; 
    var long; 

    if (data1.hasOwnProperty(pais)) { 
     lat = data1.pais.lat; 
     console.log(lat); 
    } 

} 

Heres das Problem:

function getColor (loc) { 
    var pais = loc; 
    var lat; 
    var long; 

//data1 is a variable with the list of all countries and their coordinates 
    if (data1.hasOwnProperty(pais)) { 
     lat = data1.pais.lat; 
     console.log(lat); 
    } 

} 

sein für das Objekt suchen „pais“ anstelle des Objekts innerhalb der variablen „pais“, wie ich dieses Problem beheben kann? Jede Hilfe willkommen

+0

Das bedeutet, dass 'data1.pais' existiert nicht. Debuggen, um herauszufinden, warum. – Carcigenicate

+0

Ich weiß, was es bedeutet und was das Problem ist, ich weiß einfach nicht, wie es zu beheben – Pepe

+1

'data1' ist ein Objekt für Sie erstellt, richtig? Gehe dorthin, wo "pais" zugewiesen ist, und vergewissere dich, dass es immer zugewiesen wird. Diesen Code hier zu veröffentlichen würde auch helfen. – Carcigenicate

Antwort

1

Ich werde erraten, was Sie tun soll:

lat = data1[pais].lat; 

pais wird als String interpretiert werden und sollten handeln wie Sie, indem sie die Eigenschaft mit dem Wert der Variablen pais beabsichtigen .

Dies ist bekannt als "bracket notation".

+0

seine Arbeits dank Mann – Pepe

+0

@ user87073 Denken Sie daran, Javascript-Objekte sind nur Karten/Wörterbücher/assoziative Arrays (was auch immer Sie sie nennen wollen), und sind Arrays sehr ähnlich. Sie würden 'arr [0]' ausführen, um das erste Element eines Arrays zu erhalten, aber 'dict [" someProp "]', um die "someProp" -Eigenschaft des Wörterbuchs zu erhalten. Lies den Link, den ich in der Antwort gepostet habe, um ein besseres Verständnis zu bekommen. – Carcigenicate

Verwandte Themen