2

I am using ArcGIS JavaScript 3.7 API's and i am using agsjs.dijit.TOC control and it is working fine but when i added Label Layer in my map that time Label layer is coming fine but TOC is not working Properly.

While Pressing the checkbox to On-Off the Layer it is working fine but regarding the feature layer i added one Label layer that is not getting On-Off

Can anyone tell me how to Switch-Off or On the Label Layer.

Thanks in Advance.

I am Pasting some code..

 Var load = function () {
 require(["dojo/_base/Color", "esri/symbols/TextSymbol", "esri/renderers/SimpleRenderer", "esri/renderers/ScaleDependentRenderer"],
 function (Color, TextSymbol, SimpleRenderer, ScaleDependentRenderer) {
 var statesColor = new Color("#666");
 var fieldLabel = new TextSymbol().setColor(statesColor);
 fieldLabel.font.setSize("4pt");
 fieldLabel.font.setFamily("arial");
 statesLabelRenderer = new SimpleRenderer(fieldLabel);
 return statesLabelRenderer;
 });
 }
 var layers = []; 
 var layer = new esri.layers.FeatureLayer(url, {
 mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
 outFields: ["*"] 
 });
 layers.push(layer);
 layerInfo.push({ layer: layer, title: item["LookupDisplayDesc"], boxLabel: item["LookupDisplayDesc"], id: layer.id, checked: layer.visibleAtMapScale, slider: true });
if (item["LookupLongDesc"] != null && item["LookupLongDesc"] != "") {
 var fieldNames = item["LookupLongDesc"].split(",");
 var labelFields = "";
for (var i = 0 ; i < fieldNames.length ; i++) {
 labelFields = labelFields + "${" + fieldNames[i].trim() + "},";
}
 labelFields = labelFields.slice(0, -1).trim();
 load();
 var labelLayer = new esri.layers.LabelLayer();
 labelLayer.addFeatureLayer(layer, statesLabelRenderer, labelFields);
 layers.push(labelLayer);
 }
}
map.addLayers(layers);
 dojo.connect(map, 'onLayersAddResult', function (results) {
 if (layerInfo.length > 0) {
 var legendDijit = new esri.dijit.Legend({
 map: map,
 layerInfos: layerInfo
 }, "legendDiv");
 legendDijit.startup();
 }
 toc = new agsjs.dijit.TOC({
 map: map,
 layerInfos: layerInfo
 }, 'LayerDiv');
 toc.startup(); 
 });
asked Oct 11, 2013 at 5:00

1 Answer 1

3

U can achieve it, by simply adding a id to the LabelLayer:

 var labelLayer = new esri.layers.LabelLayer({ id: "labels" });

And then get the layer from the id, and set the visibility:

map.getLayer("labels").setVisibility(false/true);
answered Oct 17, 2013 at 13:37

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.