Python 68.8%
TypeScript 18.6%
CSS 8.7%
JavaScript 3.3%
HTML 0.6%
1# Lou-Ka Maps — intégration Ka Maps23**Auteur : Simon-Pierre Boucher — contact@spboucher.ai — Groupe Ka / Ka Maps (intégration Lou-Ka)**45Lou-Ka consomme le framework partagé `@groupe-ka/ka-maps`6(`file:../../ka-maps`, moteur Mapbox GL, style Standard 3D). Voir7`~/Desktop/ka-maps/docs/ka-maps.md` pour l'architecture du framework.89## Fichiers de l'intégration1011| Fichier | Rôle |12|---|---|13| `frontend/src/kamaps/theme.ts` | thème Lou-Ka Maps (encre/lime/vert ; pastilles encre-blanc, sélection lime) |14| `frontend/src/kamaps/adapter.ts` | `/api/listings.geojson?bbox=…` → `MapProperty` (kind `listing`, type `rent`) |15| `frontend/src/kamaps/config.ts` | jeton public Mapbox (surcharge `VITE_MAPBOX_TOKEN`) |16| `frontend/src/components/MapView.tsx` | montage : sync liste↔carte, URL caméra, aperçu React, 3D/2D |17| `frontend/src/pages/Home.tsx` | sélection/survol des cartes de liste + recherche debouncée |18| `louka/web.py` | `/api/listings.geojson` : `bbox`, `limit`, `totalGeocoded`, `totalMatching` |19| `louka/db.py` | index `idx_listings_geo(lat,lng)` (+ `PRAGMA optimize` à l'ingestion) |2021## Spécificités Lou-Ka2223- `cluster={{ maxZoom: 15, valueClamp: [250, 8000] }}` : géocodage par24 immeuble (les logements d'une adresse se superposent) et loyers25 aberrants (maisons à vendre publiées en location) bornés.26- Compat : sans `bbox`, l'endpoint GeoJSON garde son ancien comportement.27- « N hors carte » = annonces filtrées sans coordonnées ou hors zone28 (`totalMatching`) — ~40 % des annonces actives ne sont pas géocodées.29- L'app iOS (MapKit) est hors périmètre Ka Maps : elle partage seulement30 les API.3132## Vérifier3334`npm run build` (typecheck+bundle) ; `python run.py serve 8095` puis35`/?view=carte` : grappes → zoom → pastilles → clic → aperçu → pan →36« Rechercher dans cette zone » → filtre → compteur.37