mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 10:53:59 +00:00
feat(outlines): voice outlines without Overpass — bundled US places and neighborhoods, guarded Nominatim, OpenFreeMap streets and buildings
This commit is contained in:
1 parent
e7707d9a0f
commit
9559e7a282
333 files changed
+13203
-271
No files matched your search
@@ -3947,6 +3947,28 @@ are omitted rather than framing the wrong part of the globe.
|
||||
Berlin inside Brandenburg). Each pack loads on the first ask that needs it,
|
||||
never at start-up; the analyst region lookup uses the same packs. Gate:
|
||||
`scripts/qa-admin-outlines.mjs`.
|
||||
- Bundled place and neighborhood outlines (`src/data/placeBoundaries.js`):
|
||||
US Census places (`src/data/local_data/us_census_places/`, one file per
|
||||
state, public domain, `scripts/build-census-places.mjs`) and Who's On First
|
||||
neighborhoods (`src/data/local_data/wof_neighborhoods/`, quadtree tiles,
|
||||
per-source licences, `scripts/build-wof-neighborhoods.py`). After the admin
|
||||
packs, an area ask named at or near the view is drawn from, in order, a
|
||||
Census place ("Austin"; a state qualifier narrows the search to that state
|
||||
wherever the camera is: "Springfield, Illinois"), the San Francisco DataSF
|
||||
pack, then WOF ("Notting Hill", "Le Marais"). "Near" reaches half the view
|
||||
radius. A district ask takes a neighborhood first and a place only when the
|
||||
view is inside it; without an entity kind, the candidate holding the view
|
||||
wins, else the nearer. "City of X" asks for an incorporated place; when
|
||||
several places still fit and nothing decides, the geocoder answers.
|
||||
Compound, grounds, monument and "around" asks skip these, as do names that
|
||||
end like a landmark ("Central Park") unless asked as a district, and a
|
||||
qualified neighborhood ("Williamsburg, Virginia") goes to the geocoder. A
|
||||
geocoded city or neighborhood is drawn from the same packs when one carries
|
||||
the name and holds the point, before any boundary lookup. Only the index and
|
||||
the state files or tiles around the point are fetched (files under 4 KB are
|
||||
inlined into the bundle), and the recently used ones are kept (12 state
|
||||
files, 24 tiles). Gate:
|
||||
`node scripts/qa-voice-routing.mjs --layer behavior --behavior outlines`.
|
||||
- Renderer contract: `src/annotations/hybridAnnotationRenderer.js` routes draped `area`/`route` geometry to world-space Cesium rendering and reticles/pins/arrows/callouts to the screen-space SVG renderer. Area labels are screen-space callouts so all captions share one visual language; progressive outline upgrades convert the existing screen group in place when the anchor snaps to the resolved centroid.
|
||||
- Tooling: voice has `annotate_map` and `clear_annotations` tools. Annotations accumulate and persist by default; clearing is explicit only. Partial failures, approximate synthesized zones, and route fallbacks are returned as structured tool results so the voice layer can be honest.
|
||||
- Console/dev API: `window.__gevAnnotations.tour()`, `.demo()`, `.annotate()`, `.clear()`, `.count()`, and `.list()` are the deterministic no-mic test surface.
|
||||
|
||||
Reference in new issue
Block a user