import "@arcgis/map-components/components/arcgis-slice";The Slice component is a 3D analysis tool that can be used to reveal occluded content in a Scene. It applies slice analysis to any layer type, making it possible to see inside buildings or to explore geological surfaces.
The slicing shape
is always a plane.
By default, the plane is either horizontal or vertical. To allow a tilt angle for the plane, set
tiltEnabled
to true. The slice hides any content in front of the surface. The handles on the sides of the plane can be used to adjust
the size, heading, tilt, and position of the slice plane.
The SlicePlane
can be set or retrieved using the shape property.
Once the slice plane is applied, layers can be excluded from the slicing. For example, by excluding the sublayers which include columns and floor slabs, the inner structure of a building can investigated.
Holding the Shift key while placing a new slice applies it vertically.
Known limitation
Slice is only supported in a 3D Scene component.
See also
Demo
Properties
| Property | Attribute | Type |
|---|---|---|
analysis | | SliceAnalysis |
autoDestroyDisabled | auto-destroy-disabled | boolean |
excludedLayers | | Collection<Layer | BuildingComponentSublayer> |
excludeGroundSurface | exclude-ground-surface | boolean |
headingLevel | heading-level | 1 | 2 | 3 | 4 | 5 | 6 |
iconreflected | icon | string |
label | label | string |
messageOverrides | | Record<string, unknown> |
positiondeprecated | position | "bottom-leading" | "bottom-left" | "bottom-right" | "bottom-trailing" | "manual" | "top-leading" | "top-left" | "top-right" | "top-trailing" |
referenceElement | reference-element | HTMLArcgisLinkChartElement | HTMLArcgisMapElement | HTMLArcgisSceneElement | string |
shape | | SlicePlane |
statereadonlyreflected | state | "disabled" | "excludingLayer" | "ready" | "sliced" | "slicing" |
tiltEnabled | tilt-enabled | boolean |
view | | SceneView |
analysis
analysis: SliceAnalysisThe SliceAnalysis created or modified by the component.
When connecting the Slice component to the Scene component, it automatically creates an empty analysis and adds it to the Scene's analyses collection. Whenever the component is destroyed, the analysis is automatically removed from the collection.
Alternatively, a programmatically created analysis can be provided to the component. Then, the application itself needs to add it to and later remove it from the Scene's analyses collection.
// Create the analysis.
const sliceAnalysis = new SliceAnalysis({
shape: new SlicePlane({
position: new Point({
spatialReference: { latestWkid: 3857, wkid: 102100 },
x: -13624925.727820931,
y: 4550341.695170021,
z: 56
}),
tilt: 270,
width: 310,
height: 190,
heading: 45
})
});
// Get the Scene and Slice component and wait until they are ready.
const viewElement = document.querySelector("arcgis-scene");
await viewElement.viewOnReady();
const slice = document.querySelector("arcgis-slice");
await slice.componentOnReady();
// Add the analysis to the Scene component.
viewElement.analyses.add(sliceAnalysis);
// Connect the analysis to the slice component:
slice.analysis = sliceAnalysis;autoDestroyDisabled
autoDestroyDisabled: booleanIf true, the component will not be destroyed automatically when it is disconnected from the document. This is useful when you want to move the component to a different place on the page, or temporarily hide it. If this is set, make sure to call the destroy method when you are done to prevent memory leaks.
- Attribute
- auto-destroy-disabled
- Default value
- false
excludedLayers
excludedLayers: Collection<Layer | BuildingComponentSublayer>Add layers to this collection to exclude them from the slice. Layers that are draped on the ground surface are not affected by this property
excludeGroundSurface
excludeGroundSurface: booleanIndicates whether the Ground and layers that are draped on the ground surface are excluded from the slice.
- Attribute
- exclude-ground-surface
- Default value
- false
headingLevel
headingLevel: 1 | 2 | 3 | 4 | 5 | 6Indicates the heading level to use for the "Excluded layers" heading.
- Attribute
- heading-level
- Default value
- 3
icon
icon: stringIcon which represents the component. Typically used when the component is controlled by another component (e.g. by the Expand component).
- See also
- Attribute
- icon
- Default value
- "slice"
messageOverrides
messageOverrides: Record<string, unknown>Replace localized message strings with your own strings.
Note: Individual message keys may change between releases.
position
position: "bottom-leading" | "bottom-left" | "bottom-right" | "bottom-trailing" | "manual" | "top-leading" | "top-left" | "top-right" | "top-trailing"slot instead.- Attribute
- position
referenceElement
referenceElement: HTMLArcgisLinkChartElement | HTMLArcgisMapElement | HTMLArcgisSceneElement | stringBy assigning the id attribute of the Map or Scene component to this property, you can position a child component anywhere in the DOM while still maintaining a connection to the Map or Scene.
- Attribute
- reference-element
shape
shape: SlicePlaneThe shape used to slice elements in a 3D scene. Currently the only supported shape is a plane.
Examples
// Create a slice plane programmatically.
const shape = new SlicePlane({
position: new Point({
spatialReference: { latestWkid: 3857, wkid: 102100 },
x: -13624925.727820931,
y: 4550341.695170021,
z: 56
}),
tilt: 270,
width: 310,
height: 190,
heading: 45
});
// Apply the new shape to the slice component's shape.
slice.shape = shape;// Clone the shape to modify its properties.
const shape = slice.shape.clone();
// Set new values for heading and tilt.
shape.heading = 180;
shape.tilt = 45;
// Apply the new shape to the slice component's shape.
slice.shape = shape;state
state: "disabled" | "excludingLayer" | "ready" | "sliced" | "slicing"The component's state. The values mean the following:
disabled- not ready yetexcludingLayer- currently excluding a layer from the sliceready- ready for slicingslicing- currently slicingsliced- finished slicing and a valid shape is available
- Attribute
- state
tiltEnabled
tiltEnabled: booleanEnable tilting the slice shape. If set to true, the slice shape will orient itself as best as possible to the surface under the cursor when first placing the shape. If set to false, the slice shape is restricted to be either horizontal or vertical.
- Attribute
- tilt-enabled
- Default value
- false
view
view: SceneViewThe view associated with the component.
Note: The recommended approach is to fully migrate applications to use map and scene components and avoid using MapView and SceneView directly. However, if you are migrating a large application from widgets to components, you might prefer a more gradual transition. To support this use case, the SDK includes this
viewproperty which connects a component to a MapView or SceneView. Ultimately, once migration is complete, the Slice component will be associated with a map or scene component rather than using theviewproperty.
Methods
| Method | Signature |
|---|---|
clear | clear(): Promise<void> |
componentOnReady | componentOnReady(): Promise<void> |
destroy | destroy(): Promise<void> |
start | start(): Promise<void> |
clear
clear(): Promise<void>Clear the shape of the slice, effectively removing it from the view. Other properties like excludedLayers
and excludeGroundSurface are not modified.
Calling this method changes the state to ready.
- Returns
- Promise<void>
componentOnReady
componentOnReady(): Promise<void>Create a promise that resolves once component is fully loaded.
Example
const arcgisSlice = document.querySelector("arcgis-slice");
document.body.append(arcgisSlice);
await arcgisSlice.componentOnReady();
console.log("arcgis-slice is ready to go!");- Returns
- Promise<void>
start
start(): Promise<void>Start the interactive placement of a new slice, clearing the previous shape.
Calling this method changes the state to slicing.
- Returns
- Promise<void>
Events
| Event | Type |
|---|---|
arcgisPropertyChange | CustomEvent<{ name: "state" | "analysis"; }> |
arcgisReady | CustomEvent<void> |
arcgisPropertyChange
arcgisPropertyChange: CustomEvent<{ name: "state" | "analysis"; }>Emitted when the value of a property is changed. Use this to listen to changes to properties.
arcgisReady
arcgisReady: CustomEvent<void>Emitted when the component associated with a map or scene view is ready to be interacted with.

