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 
                                    }
                                }
                            }
                        }
                    }
                }]
            });

        });

そのため、レイヤーの可視性を設定しようとしていますが、できません。その後、マップを更新する方法は?

私はいくつかの機能を持っていますが、それは動作しています。

この機能を達成するために他に何ができるでしょうか。

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 に答える