在传单中,我创建了一个函数,它接受一个包含对象的数组,每个对象包含一个标记数组和一个ID来标识该组。
我有这个数组:
var markerGroupArray = [
{ features: [L.marker([39.61, -105.02]).bindPopup('This is Littleton, CO.'),
L.marker([39.74, -104.99]).bindPopup('This is Denver, CO.'),
L.marker([39.73, -104.8]).bindPopup('This is Aurora, CO.'),
L.marker([39.77, -105.23]).bindPopup('This is Golden, CO.')], id: 'Group 1'},
{ features: [L.marker([39.51, -105.02]).bindPopup('Somewhere else'),
L.marker([39.64, -104.99]).bindPopup('Somewhere else'),
L.marker([39.63, -104.8]).bindPopup('Somewhere else'),
L.marker([39.67, -105.23]).bindPopup('Somewhere else')], id: 'Group 2'}
];
我提供给这个功能:
addOverlayMap: function (overlayMapArray) {
for (var i = 0; i < overlayMapArray.length; i++)
{
var layerGroup = L.layerGroup();
for (var j = 0; j < overlayMapArray[i][features].length; j++)
{
layerGroup.addLayer(overlayMapArray[i][features][j]);
}
this.overlayMapObject[overlayMapArray[i][id]] = layerGroup;
}
this.refreshLayerControl();
}
但是,我收到“功能”键未定义的错误。这是怎么回事?
答案 0 :(得分:2)
尝试:
overlayMapArray[i]['features']
答案 1 :(得分:2)
overlayMapArray[i][features].length
应为overlayMapArray[i].features.length
([]
周围没有features
。或者,如果您愿意,可以overlayMapArray[i]['features'].length
(在JavaScript中,您也可以这样做)。
您的代码目前正在尝试使用名为features
的变量的值;因为你没有,所以得到ReferenceError
。通过切换到文字(我的第一个建议)或括号表示法和字符串(我的第二个建议),您可以指定属性名称features
。