供参考,请参阅:https://developers.arcgis.com/javascript/jssamples/map_dynamiclayerlist.html
但是,与ESRI示例不同,我正在加载几个不同的服务,每个服务都有多层。因此,我根据以下方式修改了ESRI代码:
var visible = [];
function buildLayerList() {
arrayUtils.forEach(map.layerIds, function (id) {
var currLayer = map.getLayer(id);
var items = arrayUtils.map(currLayer.layerInfos, function (info, index) {
if (info.defaultVisibility) {
visible.push(info.id);
}
return "<input type='checkbox' class='list_item'" + (info.defaultVisibility ? "checked=checked" : "") + "' id='" + info.id + "'' /><label for='" + info.id + "'>" + info.name + "</label>";
});
});
//more code per ESRI
}
但是,就我而言,items
变量没有获得任何值;它以零或未定义的返回。我认为这是因为与Esri不同,我基本上有两个循环。
那么我该如何修复?我不想用力编码图层选择菜单选项,但是如果我不能弄清楚,可能必须要。
注意:这些都是ArcGIS动态层。
谢谢!
没关系:我所需要的只是ESRI JavaScript API的'Toc widtget';我下载并在我的代码中实现。比试图重新发明方向盘要容易得多。谢谢 - 特别是 @pointy。