2013-10-10 2 views
0

Я использую API-интерфейс ArcGIS JavaScript 3.7, и я использую управление agsjs.dijit.TOC, и он работает нормально, но когда я добавил слой Label на моей карте, на этот раз слой метки будет прекрасным, но TOC не работает должным образом.TOC с слоем Label в ArcGIS JavaScript

В то время как нажатие на флажок в On-Off в слое он работает нормально, но в отношении художественного слоя я добавил один Лейбл слой, который не получает On-Off

Может кто-нибудь сказать мне, как Switch-Off или On слой этикетки.

Спасибо заранее.

Я Оклейка код ..

 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();     
      }); 
+0

Ребят я жду ответа ... –

ответ

1

Не знакомы с тем, как работает TOC, я построю свою логику слоя вручную. Если вы идете по ручному маршруту, вы можете просто использовать шоу и скрывать, как показано ниже, или использовать setVisibleLayers, например this.

Простое шоу и скрыть в вашей логике слоя будет:

labelLayer.hide(); 
labelLayer.show(); 
Смежные вопросы