无法遍历javascript对象

时间:2014-05-25 05:27:35

标签: javascript leaflet geojson

我有一个对象district_boundaries,它是leaflet geojson对象
var district_boundary = new L.geoJson(); 并通过ajax调用将数据添加到区

的geojson文件中
$.ajax({
dataType: "json",
url: "data/district.geojson",
success: function(data) {
    $(data.features).each(function(key, data) {
        district_boundary.addData(data);
        district_boundary.setStyle(district_boundary_styles["default"]);

    });
}

});

enter image description here 所以在_layers中有75个值,这样的值的一个例子是带有键149的图片中的值。 我需要遍历所有这75个值并从 features 键获取值。即地区的名称,并用它们来标记地区。 我试过这个

_test = district_boundary._layers;
for (var aht in _test) {
   console.log('inside the loop');
   var b = _test[aht];
   console.log(b.feature.properties.NAME_3);
}

在控制台中尝试并显示结果时,此工作正常 enter image description here 但是当我尝试通过在我的页面的脚本中运行时,这不起作用,虽然_test填充了district_boundary._layers中的值,但循环未执行。可能有什么理由可以请任何人帮我这个?

msg和msg.d的输出是 enter image description here

2 个答案:

答案 0 :(得分:1)

我猜你的JSON数据被包裹在d变量中。请尝试以下方法 -

$.ajax({
    dataType: "json",
    url: "data/district.geojson",
    success: function(msg) {
        //console.log(msg); //try this to see whether the data is really getting wrapped in d
        var data = msg.d; //msg.d contains the actual data
        $(data.features).each(function(key, data) {
            district_boundary.addData(data);
            district_boundary.setStyle(district_boundary_styles["default"]);        
        });
    }
});

答案 1 :(得分:1)

解决。代码中的所有内容都很好,除了执行流程。我试图使用稍后将根据流程定义的数据,所以在我尝试循环_test的脚本部分中,它还没有填充,但是当我在控制台中尝试时,它是在所有数据加载之后因此它起作用了。