Mapping
3D & massing
Buildings are context, the proposal is the subject, and the camera stays flat until 3D earns its keep. Numbers measured from the shipping map.
Buildings fade in
Context buildings are fill-extrusions whose opacity is interpolated on zoom: 0 at 14.5, 0.75 at 15.5. A city of prisms popping into one frame is the worst frame the map can paint; a full level of fade means no frame is the arrival frame.
- Height is
coalesce(h, 3)— where the storeys model has no answer, a building is one storey, which is the honest default in a detached-housing fabric, not a guess dressed as data. fill-extrusion-vertical-gradientis on for EVERY extrusion — the light comes from one sky, including on the proposal.- The building mass is a cool neutral (
#E8E9ED) matched to the basemap's greys — buildings are furniture, never a signal.
The solidity ladder
Opacity is rank. The thing being proposed is the most solid thing on the map, and everything else yields to it.
0.90.750.420.9— the PROPOSAL: best-fit massing or an uploaded model on the selected lot.0.75— context buildings at full zoom: solid enough to read, transparent enough to see a boundary through.0.42— the selected lot's own massing when it is selection rather than proposal, in the accent.- The 3D planning envelope is drawn as foot + walls from the parcel's own base/top attributes — the rule volume is geometry, not decoration, and the easements are drawn BEFORE it so the carved-out box reads as clear of them.
Pitch & tilt
2D is the working view. 3D is a mode the user enters, not a state the map drifts into.
- Every ordinary camera move lands flat and north-up — pitch 0, bearing 0 ride along on every fly, fit and reset.
- While an envelope is up, the reframe owns tilt: forcing pitch 0 before re-tilting paints a one-frame bounce, so the fit leaves pitch alone exactly then.
- Leaving 3D is one ease, 600–700 ms, back to flat — the same duration class as every other mode reset (Camera & movement).