2012-11-12 35 views
0

我想读一个简单的json数据文件。但我不断收到“Uncaught TypeError:无法读取未定义的”错误的属性'lat'。我不确定为什么。我尝试过无数次尝试改变json文件的结构,但无济于事。任何援助将受到欢迎。读取一个.json文件,并得到一个错误

for (var i = 0; i < 1000; i++) { 
    var dataCoal = data.coal[i]; 

    // Creating a random position 
    var latLng = new google.maps.LatLng(dataCoal.lat,dataCoal.lon); 


    //Uncaught TypeError: Cannot read property 'lat' of undefined 


    // Creating a marker. Note that we don't add it to the map 
    var marker = new google.maps.Marker({ 
     position: latLng 
    }); 

    // Adding the marker to the markers array 
    markers.push(marker); 

    } 

这是在JSON文件

var data = { "coal": [{"NAME":"Haju Coal","Metals":"Coal","Lat":-0.11667,"Lon":114.85,"Accuracy":"approximate","DevStage":"Preproduction","ActStatus":"Temporarily On Hold","Company":"BHP Billiton Group","InSitu":700,"Metals_ft_style":0,"Accuracy_ft_style":0,"DevStage_ft_style":0,"ActStatus_ft_style":0}]} 
+1

有什么特别的原因,您必须在您的循环恒定的上限?如果你console.log(data.coal [0])会发生什么? Lat是属性? –

+0

'for(var i = 0; i nnnnnn

+0

谢谢你们。实际的JSON文件有多个条目。 1000是我选择的一个随机数。我会改变它看看是否有帮助。这似乎解决了错误。谢谢。 – dilzeem

回答

0

您应该有一些以表示结束你的循环一个条目。

for (var i = 0; i < 1; i++) { 

以外,你有误差是latlon被小写

var latLng = new google.maps.LatLng(dataCoal.Lat,dataCoal.Lon); 

应该做的伎俩

所以它应该看起来像唯一

var data = { "coal": [{"NAME":"Haju Coal","Metals":"Coal","Lat":-0.11667,"Lon":114.85,"Accuracy":"approximate","DevStage":"Preproduction","ActStatus":"Temporarily On Hold","Company":"BHP Billiton Group","InSitu":700,"Metals_ft_style":0,"Accuracy_ft_style":0,"DevStage_ft_style":0,"ActStatus_ft_style":0}]} 
for (var i = 0; data.length < 1000; i++) { 
    var dataCoal = data.coal[i]; 

    // Creating a random position 
    var latLng = new google.maps.LatLng(dataCoal.Lat, dataCoal.Lon); 

    //Uncaught TypeError: Cannot read property 'lat' of undefined 


    // Creating a marker. Note that we don't add it to the map 
    var marker = new google.maps.Marker({ 
     position: latLng 
    }); 

    // Adding the marker to the markers array 
    markers.push(marker); 

} 

0

我认为最好的办法是在像PHP一个foreach的data.coal迭代:

var coal; 
for (var index in data.coal) { 

    if (data.coal.hasOwnProperty(index)) { 
    coal = data.coal[index]; 

    var latLng = new google.maps.LatLng(coal.Lat, coal.Lon); 

    // ... 

    } 
} 
相关问题