Commits (4)
...@@ -191,4 +191,30 @@ public function show(EtablissementRepository $etablissementRepository, Commentai ...@@ -191,4 +191,30 @@ public function show(EtablissementRepository $etablissementRepository, Commentai
} }
return $this->redirectToRoute('app_etablissements'); return $this->redirectToRoute('app_etablissements');
} }
/**
* @Route("/etablissements/commune/{codeCommune}", name="app_commune")
*/
public function cartographieCommune(string $codeCommune, EtablissementRepository $etablissementRepository): Response
{
// Récupérer les établissements en fonction du code_commune
$etablissements = $etablissementRepository->findByCommuneCode($codeCommune);
// Préparer les données des établissements sous forme de tableau { nom, lat, lon }
$data = [];
foreach ($etablissements as $etablissement) {
$data[] = [
'nom' => $etablissement->getNom(),
'lat' => $etablissement->getLatitude(),
'lon' => $etablissement->getLongitude(),
];
}
// Passer les données à la vue
return $this->render('etablissement/cartographieCommune.html.twig', [
'etablissements' => $data,
]);
}
} }
...@@ -114,4 +114,14 @@ class EtablissementRepository extends ServiceEntityRepository ...@@ -114,4 +114,14 @@ class EtablissementRepository extends ServiceEntityRepository
// ->getOneOrNullResult() // ->getOneOrNullResult()
// ; // ;
// } // }
// Méthode pour récupérer les établissements par code_commune
public function findByCodeCommune(string $codeCommune)
{
return $this->createQueryBuilder('e')
->where('e.code_commune = :codeCommune')
->setParameter('codeCommune', $codeCommune)
->getQuery()
->getResult();
}
} }
...@@ -4,10 +4,21 @@ ...@@ -4,10 +4,21 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>{% block title %}Welcome!{% endblock %}</title> <title>{% block title %}Welcome!{% endblock %}</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text><text y=%221.3em%22 x=%220.2em%22 font-size=%2276%22 fill=%22%23fff%22>sf</text></svg>"> <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text><text y=%221.3em%22 x=%220.2em%22 font-size=%2276%22 fill=%22%23fff%22>sf</text></svg>">
{# Ajout du fichier CSS de Leaflet #}
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css"
integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A=="
crossorigin=""/>
{% block stylesheets %} {% block stylesheets %}
{% endblock %} {% endblock %}
{% block javascripts %} {% block javascripts %}
{# Importation du fichier JS de Leaflet #}
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"
integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA=="
crossorigin=""></script>
{% block importmap %}{{ importmap('app') }}{% endblock %} {% block importmap %}{{ importmap('app') }}{% endblock %}
{% endblock %} {% endblock %}
</head> </head>
......
{% extends 'base.html.twig' %}
{% block title %}Cartographie des établissements{% endblock %}
{% block body %}
<h1>Cartographie des établissements de la commune</h1>
<!-- Div où la carte sera affichée -->
<div id="map" style="height: 500px;"></div>
<!-- Ajouter le lien vers le CSS de Leaflet -->
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
<!-- Ajouter le script JS de Leaflet -->
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
<!-- Script JavaScript pour initialiser la carte et les marqueurs -->
<script>
// Initialisation de la carte
var map = L.map('map').setView([48.8566, 2.3522], 12); // Coordonnées par défaut (Paris)
// Ajouter un fond de carte avec OpenStreetMap
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
// Tableau contenant les établissements (passé par Twig)
var etablissements = [
{% for etablissement in etablissements %}
{
nom: "{{ etablissement.nom }}",
lat: {{ etablissement.lat }},
lon: {{ etablissement.lon }}
}{% if not loop.last %},{% endif %}
{% endfor %}
];
// Boucle pour ajouter des marqueurs sur la carte
etablissements.forEach(function(etablissement) {
L.marker([etablissement.lat, etablissement.lon])
.addTo(map)
.bindPopup('<b>' + etablissement.nom + '</b>');
});
</script>
{% endblock %}