# How to control ArcGIS Server layer visibility in cesium

**URL:** <https://community.cesium.com/t/how-to-control-arcgis-server-layer-visibility-in-cesium/6860>\
**Category:** CesiumJS\
**Created:** [May 1, 2018, 9:23am UTC](https://community.cesium.com/t/how-to-control-arcgis-server-layer-visibility-in-cesium/6860 "2018-05-01T09:23:07Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![medusatisfy](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@medusatisfy](https://community.cesium.com/u/medusatisfy)\
**Post date:** [May 1, 2018, 9:23am UTC](https://community.cesium.com/t/how-to-control-arcgis-server-layer-visibility-in-cesium/6860/1 "2018-05-01T09:23:07Z")

</div>

1. A concise explanation of the problem you're experiencing.

I load a arcgis mapserver in cesium by ArcGisMapServerImageryProvider.There are saying 5 layers in this Arcgis Server map service and I want to control the visibility of each layer individualy.So I make 5 checkboxs in my HTML to control each layer visibility. But I can`t find a method to control layer visibility dynamicly in the class ArcGisMapServerImageryProvider.

How to accomplish it?

---

<div class="post-metadata">

**Author:** ![Gabby\_Getz](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/gabby_getz/32/7838_2.png) [@Gabby\_Getz](https://community.cesium.com/u/Gabby_Getz)\
**Post date:** [May 2, 2018, 2:57pm UTC](https://community.cesium.com/t/how-to-control-arcgis-server-layer-visibility-in-cesium/6860/2 "2018-05-02T14:57:46Z")

</div>

Hi there,

You should still be able to toggle the layer visibility with “show” on the [**imageryLayer**](https://cesiumjs.org/Cesium/Build/Documentation/ImageryLayer.html?classFilter=imageryl)itself, see [this example](https://cesiumjs.org/Cesium/Build/Apps/Sandcastle/index.html?src=Imagery%20Layers%20Manipulation.html) (one option is an **ArcGisMapServerImageryProvider** ).

Thanks,

Gabby

---

<div class="post-metadata">

**Author:** ![medusatisfy](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@medusatisfy](https://community.cesium.com/u/medusatisfy)\
**Post date:** [May 3, 2018, 3:31am UTC](https://community.cesium.com/t/how-to-control-arcgis-server-layer-visibility-in-cesium/6860/3 "2018-05-03T03:31:52Z")

</div>

Thank you. But what i want to say is that ArcGisMapServerImageryProvider constructor needs a object which contains a property 'layer'. If I assign the layer attribute to '[0,1,2,4]', then I will get the correspoding layers in this arcgis server map service. Now I want to control the '0,1,2,4' layer individualy rather than controlling the visibility of this whole map service.

After I create a ArcGisMapServerImageryProvider instance, I can only read layers property and cannot assign it to a new array to change the layer visibility(not the mapserver visibility).

---

<div class="post-metadata">

**Author:** ![Gabby\_Getz](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/gabby_getz/32/7838_2.png) [@Gabby\_Getz](https://community.cesium.com/u/Gabby_Getz)\
**Post date:** [May 4, 2018, 1:58pm UTC](https://community.cesium.com/t/how-to-control-arcgis-server-layer-visibility-in-cesium/6860/4 "2018-05-04T13:58:59Z")

</div>

Oh, I see!

The **ArcGisImageryProvider** doesn’t make separate **ImageryLayers** for each ArcGIS layer, but rather requests which layers you specify via the url parameters, the result of which becomes the **ImageryLayer** shown. You’re correct that you can’t modify the layers property after creation, so I’ve opened [#6563](https://github.com/AnalyticalGraphicsInc/cesium/issues/6563) to track adding this feature.

As a workaround, you can destroy the old **ArcGisImageryProvider** and create a new one with the requested layers when they change.

Thanks,

Gabby
