fix(globe): correct every marker location + stop the card opening on zoom#136
Merged
Merged
Conversation
… 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
1. Markers were in the wrong place (or missing entirely)
web/lib/listings.tsgeocodes via an exact-stringGEOlookup that had only 13 entries, then applied a "jitter" to un-stack co-located pins:Two consequences:
"Toronto, ON"(3 listings) missed purely because the table only had"Toronto, ON, Canada".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.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()andsetSelected(), 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 inpage-shell+home-client(Deck and Tracker still open it).Verification
tsc --noEmitclean ·eslintcleanvitest run— 51 passedpython -m unittest discover— 48 passedutil.check_schema— 59 listings valid; README regenerated/globereturns 200🤖 Generated with Claude Code