2

我正在使用 ArcGis javascript api 3.5,我的代码是

 map = new esri.Map("mapDiv", {
            basemap: "streets",
            center: [-112.07102547942392, 46.75909704205151],
            zoom: 12,
            slider: false,
            infoWindow: infoWindow
        });




        var featureLayer = new esri.layers.FeatureLayer("http:/abc/arcgis/rest/services/MTARNG/MapServer/1", {
            mode: esri.layers.FeatureLayer.MODE_SNAPSHOT,
            infoTemplate: templateFuze,
            outFields: ["*"]
        });
        var featureLayer1 = new esri.layers.FeatureLayer("http://abc/arcgis/rest/services/MTARNG/MapServer/0", {
            mode: esri.layers.FeatureLayer.MODE_SNAPSHOT,
            infoTemplate: templateParcel,
            outFields: ["*"]
        });
        var featureLayer2 = new esri.layers.FeatureLayer("http://abc/arcgis/rest/services/MTARNG/MapServer/2", {
            mode: esri.layers.FeatureLayer.MODE_SNAPSHOT,
            infoTemplate: templateGrid,
            outFields: ["*"]
        });

            Ext.create('Ext.form.Panel', {
                width: 400,
                height: 600,
                bodyPadding: 10,
                renderTo: Ext.get('LayerDiv'),
                items: [{
                    xtype: 'checkboxgroup',
                    columns: 1,
                    vertical: true,
                    items: layerInfo,
                    listeners: {

                        change: {
                            fn: function (checkbox, checked) {
                                for (var i = 0; i < checkbox.items.items.length; i++) {
                                    if (checkbox.items.items[i].checked) {
                                        //visible true checkbox.items.items[0].boxLabel                                        

                                    }
                                    else {
                                        //visible false 
                                    }
                                }
                            }
                        }
                    }
                }]
            });

        });

所以我正在尝试设置图层的可见性,但我无法做到。之后如何刷新地图?

我有一些功能,但它正在工作,例如-visibleAtMapScale = false,defaultVisibility = false,为了刷新,我只有 map.resize=true;

我还能尝试什么来实现此功能。

4

3 回答 3

5

您可以使用 hide() 和 show() 函数更改图层的可见性 - FeatureLayer 从 GraphicsLayuer 继承它们(从 Layer 继承它们)。所以在你的例子中,给定 featureLayer 是一个全局变量,当事件触发时它应该在范围内,所以你可以这样做:

featureLayer.hide();

featureLayer.show();

您不需要刷新地图,它会自动发生。

西蒙

于 2013-06-11T14:38:29.337 回答
1

创建新FeatureLayer时,您可以使用可选参数指定默认可见性。默认值为真。

var featureLayer = new esri.layers.FeatureLayer("http:/.../MapServer/1",     
      {visible:false}
});

要设置现有图层的可见性,可以使用setVisibility()方法。

featureLayer.setVisibility(false);
于 2016-05-18T20:32:41.907 回答
0

如果要在 Visual Studio 中启用智能感知支持,可以从 Esri 网站下载并引用代码辅助插件。这里有一个关于它的帮助页面,其中包含指向支持的各种版本以及如何从 VS 使用它的链接。

如果您只想获取 JS API v3.5 的 VS2012 版本,请点击此处并参考:

如果在 HTML 文件中工作,请添加脚本标记以添加对代码辅助的引用

<script type='text/javascript' src='path_to_vsdoc.js'></script>

如果在 JavaScript 文件中工作,请将引用指令添加到 VSDoc 文件:

  /// <reference path="~/Scripts/esri-jsapi-vsdoc.js" />
于 2013-06-12T22:23:39.140 回答