---
suivi: 1917
date: 2026-10-15
sujet: Carte d'ensemble des parcelles
chantier: module-foncier
type: evolution
statut: poussé
hash: af3c48f2d
fichiers:
  - app/Services/Foncier/ParcelleCarteEnsemble.php
  - app/Services/Foncier/ParcelleProspectionQuery.php
  - app/Http/Controllers/Foncier/ProspectionController.php
  - app/Support/Foncier/FoncierReferentiels.php
  - routes/web.php
  - resources/js/Components/Foncier/ParcellesCarte.vue
  - resources/js/Pages/Foncier/Prospection/Index.vue
  - resources/js/Pages/Foncier/Patrimoine/Index.vue
  - resources/js/visites/index.js
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tests/Unit/ParcelleCarteEnsemble1917Test.php
  - tests/Unit/VisiteGuidee1900Test.php
  - tests/Unit/VisiteGuidee1907Test.php
  - public/build/manifest.json
  - docs/suivi/SUIVI_1917_carte_parcelles.md
---

# SUIVI #1917 — carte d'ensemble des parcelles

## PROMPT ENVOYÉ

Sur Foncier › Parcelles, une bascule Liste / Carte. La carte reprend les filtres, la recherche et les droits de la liste. Couleur par destination, fond Plan IGN et photographies aériennes. Patrimoine ouvre cette carte sur les parcelles détenues.

## Fiches lues

- #1910 : la visibilité est le responsable, la parcelle non attribuée, ou un dossier habilité. Le secteur n'est pas un droit. La carte ne doit pas ouvrir un autre chemin.
- #1912 : la page Parcelles est `Prospection/Index.vue`. Les totaux suivent `requeteFiltree`.
- #1568 / #1915 : dix destinations, dont Lot en vente. La palette d'emprise colore le statut, pas la destination.
- #1900 : la visite `foncier.parcelles` était en version 3. Une étape nouvelle monte la version.
- #1913 : les contours sont en WGS84. L'index spatial `parcelle_geometries_geom_idx` existe. La surface affichée dans la fenêtre suit la liste : arpentée si elle est saisie, sinon cadastrale.

## SYNTHÈSE

La bascule est en haut de la liste. `vue=carte` reste dans l'adresse, avec les filtres. L'endpoint lit `requeteFiltree` : `Parcelle::query()` applique `FoncierParcelleVisibiliteScope`. Pas de contournement du scope.

Jusqu'au zoom 12, ou au-delà de 400 objets, la carte montre des points (regroupés s'il y en a trop) et le message « Zoomez pour afficher toutes les parcelles ». À partir du zoom 13, si la fenêtre en contient au plus 400, les contours simplifiés s'affichent. Une parcelle sans responsable a un contour plus épais. Le compteur des parcelles sans contour suit les filtres et ouvre la liste correspondante.

Les fonds Plan IGN V2 et Photographies aériennes sont sur `data.geopf.fr`, déjà utilisé par la fiche. Leaflet est déjà dans le projet. Aucune dépendance nouvelle. Aucune donnée modifiée. Pas de migration.

Patrimoine : « Voir sur la carte » ouvre les parcelles détenues. La société choisie est transmise.

| Destination | Libellé | Couleur |
| --- | --- | --- |
| a_definir | Destination non arbitrée | #78716C |
| a_verifier | À vérifier | #C026D3 |
| support_operation | Support d'opération | #2563EB |
| bouchon | Bouchon | #0891B2 |
| reserve | Réserve | #4F46E5 |
| cession | Cession | #DB2777 |
| lot_en_vente | Lot en vente | #CA8A04 |
| echange | Échange | #65A30D |
| retrocession | Rétrocession | #9F1239 |
| patrimoine | Patrimoine | #0E7490 |

## DÉPLOIEMENT-TEST

git pull origin main
php artisan optimize:clear
php artisan view:clear
php artisan route:clear
php artisan journal:sync

Pas de migration.

1. Liste, vue complète : Carte, légende des dix destinations, zoom France puis commune.
2. Filtre Destination = Lot en vente, basculer Liste puis Carte : le filtre reste.
3. Utilisateur foncier non admin : les parcelles d'un autre responsable n'apparaissent pas. Les siennes et les non attribuées oui.
4. Clic : référence, commune, surface, statut, destination, société, responsable, lien fiche.
5. Patrimoine, avec et sans société : Voir sur la carte.

La base locale a refusé la connexion (127.0.0.1:3306). Le temps de réponse sur 2 166 contours n'a pas été mesuré ici. Le relever dans l'onglet Réseau, sur la requête `/foncier/prospection/carte`, après le déploiement.

## LEÇON

La carte n'a pas de requête à elle. Elle appelle `requeteFiltree`, donc le scope et les filtres de la liste. Ne pas prendre `queryWithoutParcelleAcl`. Les couleurs de destination ne réutilisent pas la palette de statut de l'emprise.
