How to hide a map service layer?

952
5
01-15-2019 11:00 AM
ShaningYu
Frequent Contributor

How to hide a map service layer?  For a map service with 2 dozens of layers, I want to hide one of them from the TOC.  Is there is an easy way to do it?  Thanks.

0 Kudos
5 Replies
TimMcGee1
Occasional Contributor III

An example of this is provided in the demo code: cmv-app/viewer.js at develop · cmv/cmv-app · GitHub 

0 Kudos
ShaningYu
Frequent Contributor

Tim: Thanks for your response.  I use the code:

imageParameters: buildImageParameters({ ...

but got runtime error:  JavaScript runtime error: 'buildImageParameters' is undefined

I DO use "http://js.arcgis.com/3.27compact/" as you do.  But, for an unknown reason, this api can't be loaded in index.heml's <head></head> block, or else, the page can't be loaded.  In the <head></head> block,I load several other api's (e.g. jquery and bootstrap's api).

This api has to be loaded after the dojoConfig like below, the the apge can be loaded properly.

<script type="text/javascript">
    var dojoConfig = {
        async: true,
        packages: [{
            name: 'viewer',
            location: location.pathname.replace(/[^\/]+$/, '') + 'js/viewer'
        }, {
            name: 'config',
            location: location.pathname.replace(/[^\/]+$/, '') + 'js/config'
        }, {
            name: 'gis',
            location: location.pathname.replace(/[^\/]+$/, '') + 'js/gis'
        }]
    };
</script>
<script type="text/javascript" src="http://js.arcgis.com/3.27compact/"></script>

Could you provide your advisory to solve this problem?  Thanks.

0 Kudos
ShaningYu
Frequent Contributor

I did another try by adding the function locally

function buildImageParameters (config) {
    var ip = new ImageParameters();
    for (var key in config) {
        if (config.hasOwnProperty(key)) {
            ip[key] = config[key];
        }
    }
    return ip;
}

The 'Not found' error is gone.  But with the defined  

layerIds: [1,2,3,4,5],

layerOption: ImageParameters.LAYER_OPTION_EXCLUDE

the layer 0 still in the TOC.  What's wrong in my code?  Thanks.

0 Kudos
Noah-Sager
Esri Regular Contributor

Shaning Yu if you're using a MapImageLayer, then you can define the visibility of the sublayer (map service layer).

Doc:

Sublayer | API Reference | ArcGIS API for JavaScript 4.10 

Sample:

MapImageLayer - Toggle sublayer visibility | ArcGIS API for JavaScript 4.10 

ShaningYu
Frequent Contributor

I got runtime error when I use API 4.1.  The problem may be the same as using 3.27 version.  This could be the problem as I load several other API's that may cause some unknown conflicts.  Thanks.

0 Kudos