map: dynamische startzoom / highlightzoom per set en per item #116
Labels
No labels
blocked
bug
design
documentation
duplicate
enhancement
future
good first issue
help wanted
invalid
question
refactoring
tracker
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jelmer/topoquiz#116
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptoom
Set 5.4 Provincies (en waarschijnlijk meer NL-sets) opent met een zoomlevel dat NL heel klein laat zien — heel NW-Europa staat in beeld (UK, Denemarken, halve Duitsland), terwijl de provincie-vraag echt om een NL-scope vraagt.
Root cause
Twee zoom-regels strijden met elkaar:
map.fitBounds(NL_BOUNDS, { padding: [4,4], maxZoom: 9 })naapplyVisibility('quiz')— die kiest netjes zoom 8-9.polygonTypes.province.highlightZoom = 6. Zodra de eerste provincie wordt gehighlight (synchroon inrenderQuestion()dat ná de start-fit draait), trekt Leaflet de kaart terug naar zoom ~6 omdat dat de "cap" is voor province-items.Zelfde mechaniek speelt bij
country(highlightZoom: 5) enwater(highlightZoom: 10). Omdat een item-bounds heel klein kan zijn (Utrecht) of groot (Rusland), is één vaste `highlightZoom` per type geen goede proxy voor "hoe ver uit moet ik zoomen".Extra complicatie (#102 gevolg)
Sinds v2.22.0 is de quiz-kaart
flex:1(fit-to-viewport). De kaart-hoogte varieert dus met viewport-hoogte, maar de `highlightZoom` + `padding` zijn statisch. Op korte laptops lijkt de provincie nóg kleiner.Voorstel — opties
Optie A — adaptieve maxZoom op basis van item-bounds
Voordeel: geen per-type constantes meer. Kleine provincies zoomen in, grote landen uit. Schaalt automatisch met viewport.
Optie B — per-item hint via
item.zoom(override)Voor uitzonderingen (bv. Rusland krijgt een specifieke
zoom: 3hint omdat je anders door de Pacific scroll).Combinatie: A als default, B als opt-in override.
Scope
setHighlightPolygon→ vervang hardehighlightZoomdoorgetBoundsZoom-berekening.toHaveScreenshot) — op zijn minst voor set 5.4, 7.1, 7.3, 8.1.NL_BOUNDSinitial-fit: mag blijven maar padding herzien zodat NL strak in beeld staat, niet met zeeën eromheen.Out of scope
Prior art in repo
polygonTypes.province.skipFitvoor fuzzy/peak shapes — precedent voor per-shape branching.set.fitOnStart+bounds— precedent voor per-set-override.Fixed in v2.24.1 — highlightZoom-cap in polygonTypes verruimd van 6/10/5 naar 12 voor alle polygon-types (province/water/country). fitBounds berekent nu zelf de optimale zoom uit item-bounds + padding, 12 dient als safety-cap om micro-items (toekomstige kleine eilanden) niet naar straatniveau te laten schieten.