1
0
Fork 0

dissociation de focntions getCities et geocode

This commit is contained in:
Fred Tempez 2023-07-13 09:18:47 +02:00
parent a7f7a37e02
commit 19090a6734
2 changed files with 54 additions and 47 deletions

View File

@ -35,18 +35,10 @@ function getCalendrier()
}
return ($calendrier);
}
function geocode($url)
function getCities($html)
{
// URL de la page à analyser
//$url = $_GET['calendrier'];
// $url = 'https://www.sabradou.com/index.php';
// Récupération du contenu de la page
$html = file_get_contents($url);
// Création d'un objet DOMDocument
$html = file_get_contents($html);
$dom = new DOMDocument();
libxml_use_internal_errors(true); // Ignore les erreurs de parsing HTML
$dom->loadHTML($html);
@ -58,7 +50,7 @@ function geocode($url)
// Recherche des balises <li> dans le div
$liElements = $sommaireCentreDiv->getElementsByTagName('li');
// Tableau pour stocker les villes et leurs coordonnées
// Tableau pour stocker les villes
$cities = array();
// Parcourir les balises <li> et extraire le texte cliquable des liens
@ -69,40 +61,54 @@ function geocode($url)
$ville = $linkElement->nodeValue;
$ville = preg_replace('/^(B\s|\d{2}\s)/', '', $ville);
$href = $linkElement->getAttribute('href');
//echo $ville . "<br />";
//echo "Lien : " . $href . "<br />";
// Requête à l'API Nominatim
$options = array(
'http' => array(
'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
),
$cities[] = array(
'name' => $ville,
'href' => $href,
);
$context = stream_context_create($options);
$url = 'https://nominatim.openstreetmap.org/search?city=' . urlencode($ville) . '&format=json';
$response = file_get_contents($url, false, $context);
$data = json_decode($response, true);
// Vérifier si la requête a réussi
if (!empty($data)) {
// Récupérer les coordonnées géographiques de la première correspondance
$latitude = $data[0]['lat'];
$longitude = $data[0]['lon'];
//echo "Latitude : " . $latitude . "<br />";
//echo "Longitude : " . $longitude . "<br />";
// Ajouter la ville et ses coordonnées au tableau
$cities[] = array(
'name' => $ville,
'lat' => $latitude,
'lon' => $longitude,
'href' => $href,
);
} else {
echo "Erreur : Impossible de géocoder la ville : " . $ville;
}
}
}
return ($cities);
}
return $cities;
}
function geocode($cities)
{
// Tableau pour stocker les villes et leurs coordonnées
$citiesData = array();
// Parcourir les villes et géocoder leurs coordonnées
foreach ($cities as $city) {
$ville = $city['name'];
$href = $city['href'];
// Requête à l'API Nominatim
$options = array(
'http' => array(
'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
),
);
$context = stream_context_create($options);
$url = 'https://nominatim.openstreetmap.org/search?city=' . urlencode($ville) . '&format=json';
$response = file_get_contents($url, false, $context);
$data = json_decode($response, true);
// Vérifier si la requête a réussi
if (!empty($data)) {
// Récupérer les coordonnées géographiques de la première correspondance
$latitude = $data[0]['lat'];
$longitude = $data[0]['lon'];
// Ajouter la ville et ses coordonnées au tableau
$citiesData[] = array(
'name' => $ville,
'lat' => $latitude,
'lon' => $longitude,
'href' => $href,
);
} else {
echo "Erreur : Impossible de géocoder la ville : " . $ville;
}
}
return $citiesData;
}

View File

@ -10,7 +10,8 @@
<body>
<?php $jour = $_GET['calendrier']; ?>
<?php $cities = geocode($jour); ?>
<?php $citiesList = getCities($jour); ?>
<?php $citiesGeoCode = geocode($citiesList); ?>
<?php $calendrier = getCalendrier(); ?>
<?php foreach ($calendrier as $item) {
if ($item['url'] === $jour) {
@ -24,7 +25,7 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.js"></script>
<script>
// Tableau des villes et des coordonnées
var cities = <?php echo json_encode($cities); ?>;
var cities = <?php echo json_encode($citiesGeoCode); ?>;
// Créer la carte
var map = L.map('map').setView([50.5095, 2.6683], 9);