Skip to content
Mapping

Layers & zoom

What appears at which zoom, from the region shell up to the parcel ceiling. Numbers measured from the shipping map.

Zoom gates

< 11The region shellLGA fills as invisible click targets — they exist ONLY below 11 — with the urban footprint at 0.32.
11The council fabricParcels, zoning and every constraint overlay share ONE gate: COUNCIL_MINZOOM.
13.2Cadastre linesBoundary strokes fade in 0.35 → 1 between 13.2 and 13.8, and the width grows 0.4 → 1.1 toward z19.
13.6Selection floorThe viewport streaming that resolves a clicked lot cannot run below it, so no parcel framing lands under it.
14BuildingsFootprint tiles begin; the extrusions themselves fade in from 14.5 (see 3D & massing).
14.2Council arrivalThe default zoom a council opens at. Every layer's gate sits AT or BELOW it.
18Parcel ceilingParcel fits never land deeper.
Code
// one constant, shared by parcels, zoning and all four hazard overlays
const COUNCIL_MINZOOM = 11

map.addLayer({
  id: "lots-line",
  type: "line",
  source: "lots",
  "source-layer": "lots",
  minzoom: 13.2,          // the gate lives on the LAYER, not only the source
  paint: {
    // fade in over half a level; grow the width so an overzoomed lot stays a line
    "line-opacity": ["interpolate", ["linear"], ["zoom"], 13.2, 0.35, 13.8, 1],
    "line-width":   ["interpolate", ["linear"], ["zoom"],
                     13.2, 0.4, 15, 0.5, 17.5, 0.7, 19, 1.1]
  }
})

Rules

  • Put the gate on the LAYER, not only the source. A source-level minzoom holds in one serving mode and silently vanishes in the other.
  • Give every layer of one kind the same named constant. Parcels, zoning and all four hazard overlays share COUNCIL_MINZOOM.
  • Keep every gate AT or BELOW the council arrival zoom of 14.2. A layer gated above it looks broken on arrival.
  • Leave source maxzoom at the baked maximum — lots 15, overlays 14 — and let everything deeper overzoom.
  • Never bake tiles deeper to chase a zoom level. Vector geometry scales; the tileset does not need to.
  • Fade everything in. Strokes over half a level, buildings over a full level, the basemap raster over 300 ms. Nothing pops.
  • Grow a hairline's width with zoom. The cadastre goes 0.4 → 1.1 by z19, so an overzoomed lot still reads as a line.

Behavior & Anatomy

Parcels, zoning and every constraint overlay arrive together, at 11, because half the layers arriving before the other half reads as a broken load rather than as a design. The region view below it is for choosing a council, not reading one — which is why the LGA fills exist only there, as invisible click targets, and vanish the moment you are inside a council.

Why a gate belongs on the layer

A source-level minzoom holds in one serving mode and silently vanishes in the other — the archive's own TileJSON wins, and the zoom range the code passes is simply ignored. The layer's gate holds in both. “Silently” is the operative word: nothing errors, the map just starts drawing parcels over a whole state.

Why 14.2 is the number everything else answers to

It is the zoom a council opens at, so it is the first frame anyone sees. Every layer's gate sits at or below it, because a layer gated above the arrival zoom looks broken on arrival — the utility mains learned this the expensive way, carrying minzoom 15 against a default open zoom of 14.2 and therefore being invisible until someone zoomed in without being told to.

Overzoom is free; re-baking is not

Source maxzoom is each layer's baked maximum — lots 15, overlays 14 — and everything deeper is overzoom: free, and sharp, because vector geometry scales. Baking deeper to chase a zoom level costs a pipeline run per council and buys nothing a client-side scale did not already give.

Nothing pops

A layer that appears at full strength in one frame reads as an error even when it is correct. So the cadastre fades 0.35 → 1 over half a level rather than popping at 13.2, buildings fade over a full level, and the basemap raster crosses in over 300 ms. The boundary width also grows toward the maximum — at a flat 0.5 the overzoomed fabric read faint at z18–19, and a hairline you have to look for is a hairline that is not doing its job.

Gates are stated once and shared

Four hazard overlays — flood, character, bushfire, landslide — share one constant. The day a fifth arrives it inherits the behaviour instead of inventing a neighbour to it, and nobody has to notice that the new one is 0.2 out.

Navigate

Esc