Skip to content

FeaturePopup: mark a clicked point with an upright pin - #611

Merged
sandesh-sp merged 2 commits into
developmentfrom
feature-popup-point-pin
Nov 5, 2026
Merged

sandesh-sp merged 2 commits into
developmentfrom
feature-popup-point-pin

Conversation

@sandesh-sp

Copy link
Copy Markdown
Collaborator

What

On the deck.gl engine, a click that opens the FeaturePopup card now marks the clicked point with a location pin instead of the white-casing-and-ring outline from #587.

  • Points only. Points and multipoints get the pin. A polygon or line click still opens its card but draws nothing, and clears any pin left by an earlier point click.
  • Upright pin. One click-transparent icon (20×28 SVG in --theme-color-primary with a white stroke, tip at the point), drawn through map:createLayer with variables.markerIcon. deck.gl billboards icons, so the pin stays upright and facing the camera when the map is pitched, where the old circle lay flat.
  • Lifecycle is unchanged: the pin outlives the card, moves on the next card-opening click, and clears on a click that opens none or on teardown.

Nothing in core changed.

Why

  • The 12px ring with a 6px casing was oversized and read poorly, especially flattened on a pitched map.
  • Vector-tile polygons come back from the pick clipped to the clicked tile, so the outline traced only that piece and cut across the polygon at the tile edge.

Known limit

Polygon and line selection is dropped rather than fixed. Highlighting the whole feature needs the engine to highlight on the source vector-tile layer (uniqueIdProperty + highlightedFeatureId), which belongs in core as a shared selection request/event rather than in this plugin.

Tests

  • FeaturePopupTool.spec.js: single pin layer with a bottom-center anchor, no highlight on polygon click, a polygon click clearing an earlier pin, re-creation under the same id, the removal paths, survival across dismiss and action, removal on destroy.
  • Full unit suite green (213 files, 3645 tests).

Replace the casing-and-ring outline with a single location pin icon,
billboarded so it stays upright when the map is pitched. Only points
and multipoints are marked: a vector-tile polygon or line arrives
clipped to the clicked tile, so outlining it drew a fragment.
@sandesh-sp
sandesh-sp merged commit d34fa71 into development Nov 5, 2026
4 checks passed
sandesh-sp added a commit that referenced this pull request Nov 6, 2026
Promotes `development` to `production`. Everything merged since the last
sync (#572, 2026-10-15): seventeen PRs, 51 files, under `src/`,
`tests/`, `configure/src` and `docs/`, plus a devDependency bump. No
deploy, workflow or environment files change.

## What changed

| PR | Change | Visible to users |
|---|---|---|
| #507 | Deck.gl hover highlight on vector tile layers: only the
feature's stroke is highlighted, at the layer's pick width, with a new
optional `style.hoverHighlightWidth` | Hovered polygons no longer tint
their fill |
| #579 | FetchTimeseries: a per-layer series **Cadence** (`hour`, `day`,
`month`, `year`). The range card's Start and End pickers step at it; a
picked day runs 00:00:00 to 23:59:59 UTC, a month its first to last day
| Pickers match the series' resolution once configured |
| #580 | SeriesChart: the CSV download is named after the card's title,
section heading and variable, so one site's file is told from another's
| Download file names |
| #581 | SeriesChart: the tooltip title and the zoom window's dates
print at the series' cadence (`Feb 28, 2026` daily, `Feb 28, 2026,
14:00` hourly, `Feb 2026` monthly) | Tooltip and window dates |
| #587, #611 | FeaturePopup: a click that opens a card marks the clicked
point with an upright pin in the theme primary, which stays after the
card closes until the next click that opens no card. Polygon and line
clicks open their card but draw nothing | Pin on clicked points on every
Feature Popup layer |
| #617 | FeaturePopup: the card and pin anchor to the clicked point's
own position (nearest member of a multipoint) instead of the click,
re-anchor to the finer tile position as the map zooms in, or anchor to
exact lat/lng properties when a layer names them. Adds
`map:queryRenderedFeatures`, `map:movePopup` and `layer:viewportLoaded`
to the event bus | Card and pin stay on the point while zooming |
| #591 | Compare dates: each side draws a layer by its coverage at its
own date; a layer hidden on a side is left out of that side | Comparison
correctness |
| #592 | Compare: choosing side-by-side before a date gets a divider and
an Exit | Comparison UI |
| #593 | CI: `@playwright/test` 1.57 to 1.64.1 so Chromium installs on
Ubuntu 26.04 runners (devDependency only) | None |
| #603, #619, #620 | LayerFilter: a catalogue activation with an
`egis_url` shows a "View GIS Services" link, opened in a new tab, beside
its date range; the link keeps the theme primary color after it is
clicked | Link on the picked activation once configured |
| #622 | LayerFilter: an ongoing event shows a compact "Active" status
(pulsing dot) grouped with its dates, in place of the ACTIVE pill that
broke mid-word | Event theme status |
| #623 | LayerFilter: multi-select menus (e.g. Air4US Pollutant) use the
single-select rows: an "All …" row, ticked selected values, and the menu
stays open between picks | Multi-select filter menus |
| #606 | LayerManager: layer info popover text at the 2xs font size |
Larger layer descriptions |
| #610 | MapControl: the measure line is solid theme primary over a
white casing, with a tighter distance label; deck.gl basemaps are
created with antialiasing | Measure tool look; smoother deck.gl lines |

## Config changes required after this is live

The new keys are read by the new build only, and the Configure modal on
the *current* production build drops any key its metaconfig does not
list. So make the Configure edits in steps 1 and 3 **after** this
deploys.

1. **Air4US: set Cadence to `day`** on the five AQS timeseries layers:
PM₂.₅, O₃, CO, NO₂, SO₂ (Layers → layer → Timeseries → Cadence). Without
it the pickers step hourly against daily series and the chart tooltip
falls back to date-only. Leave PM₁₀ and the two HMS layers alone; their
timeseries blocks have no URL.
2. **Disasters: add `egis_url` to the seven catalogue activations** in
the LayerFilter tool's Catalogue (GeoJSON) field, one per entry's
`properties`:
- `202501_Fire_CA` →
`https://gis.earthdata.nasa.gov/portal/home/group.html?id=c3a8e74d6c374e4db0e4f9185f44d876#content`
- `202409_Hurricane_Helene` →
`https://gis.earthdata.nasa.gov/portal/home/group.html?sortField=added&sortOrder=desc&id=c59e5358c422416cbad77c736524b1fc#content`
- `202410_Hurricane_Milton` →
`https://gis.earthdata.nasa.gov/portal/home/group.html?id=2267e598c75e41629ec137f388d72a37#content`
- `202507_Flood_TX` →
`https://gis.earthdata.nasa.gov/portal/home/group.html?sortField=title&sortOrder=asc&id=f514ef4d04264021b95f899323e19b85#content`
- `202601_WinterWx_US` →
`https://gis.earthdata.nasa.gov/portal/home/group.html?id=461a5be76a2c4e6db6ec470657a6f9d6#content`
- `202604_Typhoon_Sinlaku` →
`https://gis.earthdata.nasa.gov/portal/home/group.html?sortField=added&sortOrder=desc&id=6ed41cdc783d4c68b08b66d923ac1386#content`
- `202606_Earthquake_Venezuela` →
`https://gis.earthdata.nasa.gov/portal/home/group.html?sortField=added&sortOrder=desc&id=58996c58a2714887adf8f5cee0900619#content`

This is a targeted edit of the catalogue JSON, not a whole-config
import. The field is free JSON, so the key survives the old build and
can be added before or after deploy; the link appears once the new build
is live.
3. **Optional:**
- `style.hoverHighlightWidth` on vector tile layers with Hover Highlight
on (Air4US HMS Fire Detection, HMS Smoke Plume). Empty keeps the styled
width.
- Latitude Property / Longitude Property
(`variables.featurePopup.latitudeProperty` / `longitudeProperty`) on
point layers whose features carry their exact coordinates as properties.
Empty keeps the geometry anchor with zoom re-anchoring.

No config is needed for #580, #581, #587, #591, #592, #593, #606, #610,
#611, #619, #620, #622 or #623.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants