New to the app? Three-step tour:
Interactive map of every unit of the National Park Service — national parks, historic sites, battlefields, seashores, monuments, rivers, and more. Each point is a separate NPS unit.
Click a point to open its popup with the park's name, narrative description, establishment date, state, region, and its authoritative NPS photo.
Filter by Park Type
Click the Filter by Type action in the header (funnel icon) to open a panel listing every unit type — National Park, National Monument, National Battlefield, National Seashore, and more. Each type is a chip showing the name and its feature count.
How chips behave: chips start ALL selected (every type visible on the map). A colored blue chip is visible on the map; a grey chip with strikethrough text is hidden. Click any chip to flip its state. The "Showing N of 405" counter updates instantly.
Three common workflows
Other controls in the panel:
• All — re-selects every type (resets to the default "show everything").
• None — clears every chip (hides all parks; map becomes empty until you select a chip).
• × in the panel header — closes the panel without changing your selection. Your filter stays applied. Reopen the panel to resume editing.
• Clicking the map also dismisses the panel (same as the other floating panels like Layers or Legend). Filter state is preserved.
Overlay Forests: open the Layers panel from the header, then tick National Forests to see the Forest Service units on top of the Parks layer. The Forests layer is loaded on this tab but starts turned off — you're in control. The Park Type filter only affects the Parks layer; toggling a chip off does not affect the Forests overlay.
Mobile: on phones and narrow tablets the filter panel spans nearly the full viewport width and the chips grow slightly for easier tapping. The panel can be scrolled if the type list exceeds the visible area.
The Dashboard tab embeds a full ArcGIS Dashboard
authored in ArcGIS Online at
allthingsspatial.maps.arcgis.com. It is a complete,
interactive analytics surface for the National Parks dataset —
not a summary image.
What you can do in the Dashboard:
• Filter by region or state using the category selectors — charts and the embedded map update in real time.
• Click any chart category (bar, slice, list row) to cross-filter every other widget on the dashboard. Click again to clear the filter.
• Read the aggregate indicators — total unit count, acreage sums, and year-established distributions are shown as number widgets at the top.
• Open any park's detail by clicking its marker on the dashboard's embedded map; a popup opens with the same NPS attributes shown on the Parks tab.
Performance note: the first time you open the Dashboard tab, the iframe fetches the dashboard runtime (~2 MB). Subsequent visits reuse the same loaded iframe, so switching to Dashboard and back is instant.
Independence from the rest of the app: filters applied inside the dashboard do not affect the Parks, Forests, or List Format tabs — each tab has its own MapView with its own state. If you filter to "National Seashores" in the dashboard and then switch to the Parks tab, the Parks tab still shows all 405 units.
A two-column layout mirroring the Experience Builder "List" pattern: a scrollable calcite-list on the left with one row per park, paired with a linked MapView on the right.
Each list row shows:
• A 96 x 72 px thumbnail — the
authoritative NPS photo for that unit, loaded directly from
www.nps.gov. Thumbnails load lazily as you
scroll, so opening the tab is fast even with 400+ rows.
• The unit's official name (e.g. "Antietam National Battlefield") as the main label.
• The first ~180 characters of the narrative description as the subtitle, truncated with an ellipsis.
Search box at the top of the list: type any keyword — park name, state abbreviation, or fragments of the description — and the list filters in real time. The count badge ("N of 405") updates with every keystroke. Clear with the × in the input to restore all rows.
Click any list item to fly the map to that park (~800 ms smooth pan + zoom) and open its popup. If the park is a point, the map zooms to level 11 centered on the point; if it's a polygon (rare in this dataset), the map fits the polygon's extent with a small margin.
unit_name,
description, image). Forests are
not shown on this tab — use either of the two map tabs for
cross-dataset work.
Search covers name AND description: typing "civil war" surfaces Antietam, Petersburg, Stones River, and other Civil War battlefields even though none have "civil war" in their name — the description field is part of the searchable haystack.
Interactive map of every unit of the US Forest Service — 154 national forests and 20 national grasslands across all 50 states and Puerto Rico. Features are drawn as boundary polygons, not points, so you can see the true extent of each forest.
Why the basemap differs from Parks: the Forests tab defaults to Streets instead of Topo so forest polygons read cleanly against roads and place names. Topo's dense contour hatch competes visually with the polygon fill. You can swap any basemap at any time via the Basemap Gallery button; the choice is remembered only for this tab.
Click any forest polygon to open its popup with the unit's name, state, acreage, and administrative region.
Overlay Parks:
• Open the Layers panel from the header action bar.
• Tick the checkbox next to National Parks. The Parks layer is loaded into this tab but starts turned off — it activates instantly once visible.
• Open the Legend panel to see the symbology for both layers side by side.
Home button on this tab zooms to the Forests layer's extent (continental US with Alaska / Puerto Rico outliers). The initial view on first load is the same fixed North America framing used on the other map tabs.
1:2,400 and an
engineer's notation like 1" = 200'), the zoom level,
and the four corner coordinates of the map in WGS84 decimal
degrees. Each value has a Copy button to paste into a
report, a search box, or another app.
Dismissing floating panels: any of the panels above (Search, Layers, Legend, Basemap) can be closed by clicking anywhere on the map, or by clicking the same header action again to toggle.
Clicking any park or forest on the map opens its popup. Popups are authored on the underlying feature service and carry over automatically — so any change the data owner makes to the popup template appears here without a redeploy.
Popup contents vary by unit type but typically include the park's name, narrative description, establishment date, state & region, and the authoritative NPS photo (parks) or forest-boundary attributes (forests).
The popup has a Zoom to link that flies the view directly to the feature, and a dock/undock toggle in the top-right corner of the popup card.
Both the Parks map and the Forests map include the other dataset as a secondary layer that starts turned off. This lets you compare the two networks without leaving the current tab.
To overlay:
Navigation:
General:
• The app remembers which tab you were on during a session. A full page refresh returns you to the default National Parks tab.
• The basemap and layer visibility choices are scoped per-tab — each tab has its own independent MapView, so changes don't bleed across tabs.
• The dashboard's filters inside the embedded iframe are independent from the filter / search controls in the rest of the app. Changing a filter inside the dashboard does not affect the Parks or List Format tabs, and vice versa.
National Parks data — a public feature service
hosted on allthingsspatial.maps.arcgis.com. Each
feature includes the NPS unit's name, description, photo URL,
establishment date, state, and region.
National Forests data — a public feature service hosted on the same ArcGIS Online organization. Forest boundary polygons with attribute detail on each unit.
Dashboard — an ArcGIS Online dashboard authored
directly in the allthingsspatial organization. Shared
publicly so it loads anonymously inside this app.
Basemaps — Esri ArcGIS Location Platform vector tile services. The app ships with topo-vector on Parks / List Format and streets-vector on Forests; any other style can be applied live via the Basemap Gallery button.
Built with — ArcGIS Maps SDK for JavaScript v5
(@arcgis/core), Esri Calcite Design System v5,
TypeScript, and Vite 8 with Rolldown. Deployed on AWS Amplify
with continuous delivery from GitHub.