我有一个对象district_boundaries,它是leaflet geojson对象
var district_boundary = new L.geoJson();
并通过ajax调用将数据添加到区
$.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"]);
});
}
});
所以在_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);
}
在控制台中尝试并显示结果时,此工作正常 但是当我尝试通过在我的页面的脚本中运行时,这不起作用,虽然_test填充了district_boundary._layers中的值,但循环未执行。可能有什么理由可以请任何人帮我这个?
msg和msg.d的输出是
答案 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的脚本部分中,它还没有填充,但是当我在控制台中尝试时,它是在所有数据加载之后因此它起作用了。