

Public Class CIMLayerOverrideSet Inherits CIMObject Implements System.ComponentModel.INotifyPropertyChanged, System.Xml.Serialization.IXmlSerializable
public class CIMLayerOverrideSet : CIMObject, System.ComponentModel.INotifyPropertyChanged, System.Xml.Serialization.IXmlSerializable
{
//Note: Run this code within a QueuedTask
//Get the USA States map from the project
//This map has both States and Cities layers
var usaMap = Project.Current.GetItems<MapProjectItem>().FirstOrDefault(m => m.Name == "USA States")?.GetMap();
//The layout has two map frames - one for States and one for Cities
//We will set layer visibility overrides on each map frame, so that only the relevant layer is visible in each map frame
// Get the States map frame in the layout
var statesMapFrame = layout.Elements.OfType<MapFrame>().FirstOrDefault(n => n.Name == "States");
//Get the map frame definition
var mapFrameDefinition = statesMapFrame.GetDefinition() as CIMMapFrame;
//Enable layer visibility overrides for the states map frame
mapFrameDefinition.OverrideLayerVisibility = true;
//Create layer override sets
//Set States layer to visible and Cities layer to not visible
var layerOverrideSets = new List<CIMLayerOverrideSet>
{
new CIMLayerOverrideSet
{
LayerURI = usaMap.Layers.FirstOrDefault(l => l.Name == "States")?.URI,
Value = true
},
new CIMLayerOverrideSet {
LayerURI = usaMap.Layers.FirstOrDefault(l => l.Name == "Cities")?.URI,
Value = false
}
};
//Assign the layer override sets to the map frame definition
mapFrameDefinition.LayerVisibilityOverrides = layerOverrideSets.ToArray();
//Set the modified definition back to the map frame
statesMapFrame.SetDefinition(mapFrameDefinition);
//Next, get the cities map frame in the layout
var citiesMapFrame = layout.Elements.OfType<MapFrame>().FirstOrDefault(n => n.Name == "Cities");
//Get the map frame definition for the cities map frame
var mapFrameDefinitionCities = citiesMapFrame.GetDefinition() as CIMMapFrame;
//Enable layer visibility overrides for the cities map frame
mapFrameDefinitionCities.OverrideLayerVisibility = true;
//Create layer override sets for the cities map frame
//Set Cities layer to visible and States layer to not visible
var layerOverrideSetsCities = new List<CIMLayerOverrideSet>
{
new CIMLayerOverrideSet
{
LayerURI = usaMap.Layers.FirstOrDefault(l => l.Name == "States")?.URI,
Value = false
},
new CIMLayerOverrideSet {
LayerURI = usaMap.Layers.FirstOrDefault(l => l.Name == "Cities")?.URI,
Value = true
}
};
//Assign the layer override sets to the cities map frame definition
mapFrameDefinitionCities.LayerVisibilityOverrides = layerOverrideSetsCities.ToArray();
//Set the modified definition back to the cities map frame
citiesMapFrame.SetDefinition(mapFrameDefinitionCities);
}
System.Object
ArcGIS.Core.CIM.CIMObject
ArcGIS.Core.CIM.CIMLayerOverrideSet
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)