Page carte interactive des relevés (Leaflet + OpenStreetMap)

- CarteController : index() + data() (JSON) — requête lieux géolocalisés
  ayant des sources avec relevés, agrégats par lieu
- Lieu model : relations sources() et releves() (hasManyThrough)
- Vue carte/index.blade.php : carte Leaflet pleine hauteur, marqueurs
  colorés par nombre de sources (taille/couleur proportionnels),
  popup par lieu avec liste des sources, statuts, années et lien recherche
- Tuiles OpenStreetMap inversées en mode sombre
- Route GET /carte + GET /carte/data
- Lien "Carte" dans la navigation desktop et mobile
- @stack('head') dans le layout pour injecter Leaflet uniquement sur la page carte

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-04 21:02:28 +02:00
parent 6f55663984
commit a1860e9462
6 changed files with 248 additions and 0 deletions
+1
View File
@@ -31,6 +31,7 @@
<!-- Scripts -->
@vite(['resources/css/app.css', 'resources/js/app.js'])
@stack('head')
</head>
<body class="font-sans antialiased bg-gray-100 dark:bg-gray-900 text-gray-900 dark:text-gray-100">
<div class="min-h-screen">
@@ -33,6 +33,10 @@
Recherche
</x-nav-link>
<x-nav-link :href="route('carte')" :active="request()->routeIs('carte*')">
Carte
</x-nav-link>
@if(auth()->user()->isSectionManager())
<div class="hidden sm:flex sm:items-center">
<x-dropdown align="left" width="w-56">
@@ -198,6 +202,9 @@
<x-responsive-nav-link :href="route('recherche')" :active="request()->routeIs('recherche')">
Recherche
</x-responsive-nav-link>
<x-responsive-nav-link :href="route('carte')" :active="request()->routeIs('carte*')">
Carte
</x-responsive-nav-link>
@if(auth()->user()->isSectionManager())
@if(auth()->user()->isAdmin())
<x-responsive-nav-link :href="route('admin.dashboard')" :active="request()->routeIs('admin.dashboard')">