Skip to content

fix(globe): correct every marker location + stop the card opening on zoom#136

Merged
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/globe-marker-locations
Jul 13, 2026
Merged

fix(globe): correct every marker location + stop the card opening on zoom#136
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/globe-marker-locations

Conversation

@Jose-Gael-Cruz-Lopez

Copy link
Copy Markdown
Collaborator

1. Markers were in the wrong place (or missing entirely)

web/lib/listings.ts geocodes via an exact-string GEO lookup that had only 13 entries, then applied a "jitter" to un-stack co-located pins:

lat = geo[0] + (n > 1 ? 0.08 * Math.sin(angle) : 0);   // 0.08° ≈ 9 km

Two consequences:

  • 23 in-person listings had no coordinates at all and never rendered on the globe — including every recently-added collegiate event (Troy, Ithaca, Pittsburgh, Miami, Seattle, Vancouver, Providence…). "Toronto, ON" (3 listings) missed purely because the table only had "Toronto, ON, Canada".
  • The jitter is ~9 km. With two Cambridge listings, one pin got flung across town into Roslindale — the wrong-location dot in the report.

Fix: added every missing city, and cut the jitter to 0.01° (~1.1 km) — still enough to separate pins at city zoom, but each marker stays inside its real city.

Before After
In-person listings on the globe 17 39
Unmapped 23 1
Max displacement from true city centre ~9 km 1.11 km
Cambridge 1 pin in Roslindale HackMIT 0.00 km, HackHarvard 1.11 km

The single remaining unmapped listing is Arcangel, whose location is literally TBA — correctly left off the map rather than guessed.

Also fixed one un-geocodable entry: Agentic AI Build Week stored the venue string "Galaxy Innovation Park" as its location; it's in Ho Chi Minh City (per the 2026-07-11 verification pass), so it now maps.

2. Clicking a dot popped the detail card

The marker click handler called both flyTo() and setSelected(), so the detail card covered the very map you'd just zoomed into.

Clicking a marker now only flies the camera in. The hover popup still shows status · title · host · location, and the card remains reachable from the Deck / list — <DetailModal /> stays mounted in page-shell + home-client (Deck and Tracker still open it).

Verification

  • tsc --noEmit clean · eslint clean
  • vitest run — 51 passed
  • python -m unittest discover — 48 passed
  • util.check_schema — 59 listings valid; README regenerated
  • /globe returns 200

🤖 Generated with Claude Code

… hijacking zoom

Two globe bugs.

1) Wrong / missing marker locations (web/lib/listings.ts)
   - GEO is an exact-string lookup with only 13 entries, so 23 in-person
     listings had no coords and never rendered on the globe at all, including
     every recently-added collegiate event (Troy, Ithaca, Pittsburgh, Miami,
     Seattle, Vancouver...). Toronto missed purely because the table spelled it
     with a country suffix and the data does not.
   - The co-located-marker jitter was 0.08 degrees, which is ~9km. With two
     Cambridge listings, one pin was flung across town into Roslindale. Cut it
     to 0.01 degrees (~1.1km): still separates pins at city zoom, but every
     marker now stays inside its actual city.
   - Added all missing cities. On-globe in-person listings: 17 -> 39.
     Max displacement from the true city centre: ~9km -> 1.11km.

   The one remaining unmapped listing is Arcangel, whose location is literally
   TBA, so it is correctly left off the map rather than guessed.

2) Clicking a dot popped the detail card (web/components/hq/globe-map.tsx)
   The marker click handler called both flyTo() and setSelected(), so the card
   covered the very map you had just zoomed into. Clicking now only flies the
   camera in. The hover popup still carries the quick facts, and the card stays
   reachable from the Deck / list (DetailModal remains mounted in page-shell
   and home-client).

Also fixed one un-geocodable listing: Agentic AI Build Week stored the venue
string as its location; the event is in Ho Chi Minh City (per the 2026-07-11
verification pass), so it now maps.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Jose-Gael-Cruz-Lopez Jose-Gael-Cruz-Lopez merged commit 2e5e9d6 into main Jul 13, 2026
2 checks passed
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.

1 participant