我的传单对象_test看起来像这样 有4050个元素,对于所有这些元素,我尝试运行循环并放置标签
var a = Object.keys(_test);
console.log(a.length);
j = 0;
for (var i = 0; i < a.length - 1; i++) {
var b = _test[a[i]];
var vdc = L.polygon(b._latlngs);
vdc_name = b.feature.properties.NAME_4;
var labelLocation = new L.LatLng(vdc.getBounds().getCenter().lat, vdc.getBounds().getCenter().lng);
var labelTitle = new L.LabelOverlays(labelLocation, vdc_name);
VDC_labels.addLayer(labelTitle);
console.log(vdc_name, j);
j++}
console.log(a.length);
控制台中的输出是4050.但是
console.log(vdc_name, j);
Sidin 1841 ,这意味着循环只运行1841次。谁能帮助我找出我做错了什么?
我也试过这个,但结果是一样的
for (ath in _test) {
var b = _test[ath];
var vdc = L.polygon(b._latlngs);
// console.log(i);
// i++
vdc_name = b.feature.properties.NAME_4; //label content
var labelLocation = new L.LatLng(vdc.getBounds().getCenter().lat, vdc.getBounds().getCenter().lng);
var labelTitle = new L.LabelOverlays(labelLocation, vdc_name);
VDC_labels.addLayer(labelTitle);
}
答案 0 :(得分:0)
解决。 实际上问题在于数据,即在_test对象中,1842nd元素是一个多边形,与所有其他元素(多边形)不同,所以在访问坐标时
var b = _test[a[i]];
var vdc = L.polygon(b._latlngs);
b没有属性_latlngs所以循环中断..