opencode 97ebcdfe03 fix(map): arreglar 3 bugs criticos que impedian ver el mapa
Bug 1: Content-Type vacio para .pmtiles
- Vite/Astro sirven .pmtiles sin Content-Type (extension desconocida)
- pmtiles del cliente falla al parsear el header del archivo
- Solucion: plugin Vite inline 'assetMimePlugin' en astro.config.mjs que
  setea application/octet-stream para .pmtiles, application/geo+json
  para .geojson, application/json para /data/*.json

Bug 2: MapLibre override de 'position: absolute'
- El <div id='map' class='absolute inset-0'> era override por la clase
  '.maplibregl-map { position: relative }' que MapLibre anade al container
  en runtime. Resultado: #map con 0px de alto, canvas de 300x1280
  (default) en lugar de 660x1280
- Solucion: cambiar a inline style 'position: absolute; inset: 0;' que
  no es override por clases externas

Bug 3: evento 'load' se dispara antes del handler
- Los <script> de Astro 7 se cargan como modulo defer, asi que el
  evento 'load' del map puede dispararse ANTES de que registremos el
  handler. El loading overlay se queda visible encima del mapa
- Solucion: patron seguro que chequea isStyleLoaded() y si ya paso
  ejecuta el callback inmediatamente, si no registra once('load', ...).
  Tambien setTimeout(3000) como safety net

Bug 4: zoom 8 demasiado bajo para ver secciones censales
- A zoom 8 las 674 secciones censales de las Balears son 1-2px cada
  una: aparecen como ruido gris plano
- Solucion: zoom inicial 9.5 centrado en Mallorca (lat 39.6, lon 2.85)
  para que las secciones se vean como poligonos de 3-6px

Cambios adicionales:
- URL del source pmtiles con window.location.origin (protocolo pmtiles
  requiere URL absoluta, no funciona con path relativo)
- Data del source airbnb con window.location.origin
- Sintaxis del style arreglada (faltaba { de apertura de la primera layer
  tras un edit anterior)
- TypeScript 5.9.3 mantiene typecheck 0/0/0
2026-07-14 13:02:20 +02:00

Cases Tancades

Web publica que visibilitza la pressio turistica sobre el parc residencial de Balears, creuant dades oficiales d'INE (consum electric per seccio censal, com a proxy de vivenda semi-vacia) amb dades d'Inside Airbnb (listings georreferenciats).

Veure PLAN.md per al plan complet i l'arquitectura.

Estructura

data/raw/         Dades originals descarregades (no commitejades)
data/processed/   Dades intermiges del pipeline
data/output/      Dades finals (parquet, tiles, JSON)
docs/             Documentacio i materials de suport
scripts/          Pipeline Python
web/              Codi Astro de la web
FASE-*.md         Bitacora de cada fase del projecte

Setup rapid

# Python
uv venv .venv
source .venv/bin/activate
uv pip install -r requirements.txt

# Node
nvm use 20

Estat

Fase Estat
Fase 0 - Setup En curs
Fase 1 - Dades Pendent
Fase 2 - Web MVP Pendent
Fase 3 - Llanament Pendent

Fonts de dades

Llicencia

A determinar. Probablement CC BY-SA 4.0.

S
Description
No description provided
Readme
12 MiB
Languages
Astro 56.6%
Python 36.7%
JavaScript 4.2%
TypeScript 2.1%
CSS 0.4%