<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<title>Filter features by attribute | Sample | ArcGIS Maps SDK for JavaScript</title>
<!-- Load the ArcGIS Maps SDK for JavaScript from CDN -->
<script type="module" src="https://js.arcgis.com/5.0/"></script>
padding: var(--calcite-spacing-sm);
background: var(--calcite-color-background);
box-shadow: var(--calcite-shadow-sm);
font-size: var(--calcite-font-size-xl);
<arcgis-map center="-98, 40" zoom="4">
<arcgis-zoom slot="top-left"></arcgis-zoom>
expand-tooltip="Filter flash flood warnings by season">
selection-appearance="border"
<calcite-list-item label="Winter" value="Winter"></calcite-list-item>
<calcite-list-item label="Spring" value="Spring"></calcite-list-item>
<calcite-list-item label="Summer" value="Summer"></calcite-list-item>
<calcite-list-item label="Fall" value="Fall"></calcite-list-item>
<div id="titleDiv" slot="top-right">Flash Flood Warnings (2002 - 2012)</div>
const [Map, FeatureLayer, reactiveUtils] = await $arcgis.import([
"@arcgis/core/layers/FeatureLayer.js",
"@arcgis/core/core/reactiveUtils.js",
const viewElement = document.querySelector("arcgis-map");
// flash flood warnings layer
const layer = new FeatureLayer({
id: "f9e348953b3848ec8b69964d5bceae02",
// flash flood warnings layer loaded
// get a reference to the flood warnings layer view
const layerView = await viewElement.whenLayerView(layer);
const seasonsExpand = document.querySelector("arcgis-expand");
// clear the filter when user closes the expand component
reactiveUtils.when(() => !seasonsExpand.expanded, clearSeasonFilter);
// get the list of seasons
const seasonsList = document.getElementById("seasons-filter");
// selection change event handler for seasons choices
seasonsList.addEventListener("calciteListChange", filterBySeason);
// Applies a filter to the floods layer view based on the selected season
function filterBySeason() {
const selectedItem = seasonsList.selectedItems?.[0];
layerView.filter = selectedItem ? { where: `SEASON = '${selectedItem.value}'` } : null;
// Clears any season filter applied to the floods layer view
function clearSeasonFilter() {
// Remove filter from layerview
// Deselect all selected items in the list
seasonsList.selectedItems?.forEach((item) => {