Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 读取.json文件并获取错误_Javascript_Html_Json_Markers - Fatal编程技术网

Javascript 读取.json文件并获取错误

Javascript 读取.json文件并获取错误,javascript,html,json,markers,Javascript,Html,Json,Markers,我正在尝试读取一个简单的json数据文件。但是我不断得到“uncaughttypeerror:cannotreadproperty'lat'of undefined”错误。我不知道为什么。我曾多次尝试更改json文件的结构,但都没有成功。欢迎提供任何援助 for (var i = 0; i < 1000; i++) { var dataCoal = data.coal[i]; // Creating a random position var latLng = n

我正在尝试读取一个简单的json数据文件。但是我不断得到“uncaughttypeerror:cannotreadproperty'lat'of undefined”错误。我不知道为什么。我曾多次尝试更改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);

  }

你应该有一些东西来表示你的循环结束了

for (var i = 0; i < 1; i++) {
我们应该这样做

所以看起来应该是这样的

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);

}
var数据={“煤炭”:[{“名称”:“Haju煤炭”,“金属”:“煤炭”,“Lat”:-0.11667,“Lon”:114.85,“精度”:“近似”,“开发阶段”:“预生产”,“实际状态”:“暂时搁置”,“公司”:“必和必拓集团”,“现场”:700,“金属风格”:0,“精度风格”:0,“开发阶段风格”:0,“实际状态风格”:0}
对于(变量i=0;data.length<1000;i++){
var dataCoal=data.coal[i];
//创建随机位置
var latLng=新的google.maps.latLng(dataCoal.Lat,dataCoal.Lon);
//未捕获的TypeError:无法读取未定义的属性“lat”
//创建标记。请注意,我们不会将其添加到地图中
var marker=new google.maps.marker({
职位:latLng
});
//将标记添加到标记数组
标记器。推(标记器);
}

我认为最好的方法是像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);

    // ...

  }
}

在循环中有一个恒定的上界,有什么特别的原因吗?如果您使用console.log(data.coal[0]),会发生什么情况?Lat是一个属性吗?
for(var i=0;i
应该修复它。您当前对
i<1000
的测试从数组的末尾转到了一个未定义的元素,而未定义的元素不能有属性。(请注意,这不是JSON,您的“JSON文件”示例是创建(嵌套)的JavaScript代码)对象通过对象和数组文字语法。JSON是字符串表示。)谢谢各位。实际的JSON文件有多个条目。1000只是我选择的一个随机项。我将更改它以查看是否有帮助。这似乎可以修复错误。谢谢。
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);

}
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);

    // ...

  }
}