【问题标题】:ESRI Javascript API: Looping to Build a Layer Selection MenuESRI Javascript API:循环构建图层选择菜单
【发布时间】:2015-07-18 06:53:17
【问题描述】:

供参考,请参阅: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 变量没有获得任何值;它返回为 null 或未定义。我想那是因为我基本上有两个循环,不像 ESRI 的。

那么我该如何解决呢?我不想对图层选择菜单选项进行硬编码,但如果我想不通,可能不得不这样做。

注意:这些都是 Arcgis 动态层。

谢谢!

【问题讨论】:

  • 好吧,items 被声明为.forEach 回调中的局部变量。你想在哪里引用它?
  • 就在每个 ESRI 的 //more 代码下方——与原始 ESRI 代码一样
  • 这行不通——一个局部变量被称为“local”,因为它的使用被限制在它被声明的范围内。最重要的是,您的代码会在 .forEach() 的每次迭代中使用 .map() 调用的结果重新分配 items。即使您可以访问它,它也只会包含上次迭代的结果。
  • 有道理。那么该怎么办呢?
  • 我不知道你的总体目标是什么。你想做什么?

标签: javascript arcgis esri arcgis-js-api


【解决方案1】:

没关系:我只需要一个 Esri Javascript API 的“TOC Widget”;我下载了它并在我的代码中实现。比尝试重新发明轮子要容易得多。 谢谢——尤其是@Pointy。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    相关资源
    最近更新 更多