Context
We need an editable Google Maps 3D surface that can eventually host Strava-quality GeoJSON editing on top of google.maps.maps3d.Map3DElement without falling back to a different basemap. The goal is to reuse the deck.gl / editable-layers interaction model through an adapter, not rebuild all drawing/editing behavior from scratch.
Relevant starting point:
Current Prototype
GoogleMapsOverlay#setMap accepts gmp-map-3d / Map3DElement in addition to google.maps.Map.
- Map3D adapter derives deck view state from
center, range, heading, tilt, and fov.
- Map3D camera events trigger redraws.
- A passive WebGL context capture hook records a Map3D WebGL context if Google creates one after the overlay is constructed.
- If capture fails, the overlay warns and falls back to a non-interleaved DOM deck canvas instead of touching Google GL state.
- Focused tests cover Map3D detection, camera view-state derivation, and safe fallback when internals are not captured.
Local Demo Command
cd /Users/rich/Code/visgl/_worktrees/google-maps-3d-overlay-prototype
ln -s /Users/rich/Code/visgl/deck.gl/node_modules node_modules 2>/dev/null || true
export GoogleMapsAPIKey=<localhost-allowed Maps JS key>
cd examples/website/google-map-3d-overlay-prototype
../../../node_modules/.bin/vite --config ../../vite.config.local.mjs --host 127.0.0.1 --port 8093
Open: http://127.0.0.1:8093/
Current Blocker
- The local demo boots, loads
gmp-map-3d, and reaches the overlay fallback path.
- The available NEWHEAT key is valid but rejects this standalone origin with
RefererNotAllowedMapError on 127.0.0.1 and localhost.
- A second local key candidate was invalid for Maps JS.
- Need a Maps JS key whose HTTP referrers allow the standalone dev origin, or a permitted local host/origin setup.
Rabbit Hole / Next Steps
- Verify visible alignment in the local demo once the key/origin blocker is cleared.
- Decide whether Map3D should start in non-interleaved overlay mode by default until shared-GL draw-after-Google-render can be proven.
- Extend the adapter to expose enough picking/event data for editable-layers handles.
- Prototype
EditableGoogleMap3DLayer as an adapter over editable-layers rather than a new editor.
- Use native Map3D polylines/polygons as visual comparison only; deck.gl should remain the editable layer engine.
- Keep the initial implementation local/prototype until the adapter is stable enough for upstream review.
References
Context
We need an editable Google Maps 3D surface that can eventually host Strava-quality GeoJSON editing on top of
google.maps.maps3d.Map3DElementwithout falling back to a different basemap. The goal is to reuse the deck.gl / editable-layers interaction model through an adapter, not rebuild all drawing/editing behavior from scratch.Relevant starting point:
codex/google-maps-3d-overlay-prototype/Users/rich/Code/visgl/_worktrees/google-maps-3d-overlay-prototypeexamples/website/google-map-3d-overlay-prototypeCurrent Prototype
GoogleMapsOverlay#setMapacceptsgmp-map-3d/Map3DElementin addition togoogle.maps.Map.center,range,heading,tilt, andfov.Local Demo Command
Open:
http://127.0.0.1:8093/Current Blocker
gmp-map-3d, and reaches the overlay fallback path.RefererNotAllowedMapErroron127.0.0.1andlocalhost.Rabbit Hole / Next Steps
EditableGoogleMap3DLayeras an adapter over editable-layers rather than a new editor.References