geogallery const dans jquery

This commit is contained in:
Fred Tempez 2024-08-23 20:23:47 +02:00
parent e44bd9f118
commit d57f4ca503
4 changed files with 35 additions and 43 deletions

View File

@ -1 +1 @@
{"name":"geolocation","realName":"Géolocalisation","version":"0.5","update":"0.0","delete":true,"dataDirectory":"site\/data\/geolocation\/"}
{"name":"calendar","realName":"Calendrier","version":"0.2","update":"0.0","delete":true,"dataDirectory":""}

View File

@ -1,2 +1,5 @@
# Version 0.1
# Version 0.10
- Corrige un affichage incorrect lorsque l'étiquette est vide (null dans la popup).
- Supprimer le stockage des positions dans modules.json
# Version 0.9
- GeoGallery est basé sur le module gallery 4.1

View File

@ -154,8 +154,7 @@ class geogallery extends common
'name' => $this->getInput('galleryAddName'),
'directory' => $this->getInput('galleryAddDirectory', helper::FILTER_STRING_SHORT, true),
],
'legend' => [],
'position' => []
'legend' => []
]
]);
$success = true;
@ -234,13 +233,6 @@ class geogallery extends common
foreach ($legend as $file => $data) {
$legends[str_replace('.', '', $file)] = empty($data) ? $file : helper::filter($data, helper::FILTER_STRING_SHORT);
}
// Données géographique
foreach ($legend as $file => $data) {
$geo[str_replace('.', '', $file)] = [
'long' => $this->getInput('gpslong[' . $file . ']', helper::FILTER_FLOAT),
'lat' => $this->getInput('gpslat[' . $file . ']', helper::FILTER_FLOAT)
];
}
// Sauvegarder
$this->setData([
'module',
@ -253,9 +245,7 @@ class geogallery extends common
'name' => $this->getData(['module', $this->getUrl(0), 'content', $this->getUrl(2), 'config', 'name']),
'directory' => $this->getData(['module', $this->getUrl(0), 'content', $this->getUrl(2), 'config', 'directory']),
],
'legend' => $legends,
//'geo' => $geo,
'position' => $geo
'legend' => $legends
]
]);
// Valeurs en sortie
@ -375,22 +365,16 @@ class geogallery extends common
'long' => $this->gps_decimal($exif['GPSLongitude'], $exif['GPSLatitudeRef']),
'img' => $fileInfos->getPath() . '/' . strtolower($fileInfos->getFilename()),
'thumb' => str_replace('source', 'thumb', $fileInfos->getPath()) . '/' . self::THUMBS_SEPARATOR . strtolower($fileInfos->getFilename()),
'label' => $this->getData(['module', $this->getUrl(0), 'content', $gallery, 'legend', str_replace('.', '', $fileInfos->getFilename())])
];
} else {
self::$galleries[] = [
'lat' => $this->getData(['module', $this->getUrl(0), 'content', $gallery, 'position', 'directory', str_replace('.', '', $fileInfos->getFilename())]),
'long' => $this->getData(['module', $this->getUrl(0), 'content', $gallery, 'position', 'directory', str_replace('.', '', $fileInfos->getFilename())]),
'img' => $fileInfos->getPath() . '/' . strtolower($fileInfos->getFilename()),
'thumb' => str_replace('source', 'thumb', $fileInfos->getPath()) . '/' . self::THUMBS_SEPARATOR . strtolower($fileInfos->getFilename()),
'label' => $this->getData(['module', $this->getUrl(0), 'content', $gallery, 'legend', str_replace('.', '', $fileInfos->getFilename())])
'label' => is_null($this->getData(['module', $this->getUrl(0), 'content', $gallery, 'legend', str_replace('.', '', $fileInfos->getFilename())]))
? ''
: $this->getData(['module', $this->getUrl(0), 'content', $gallery, 'legend', str_replace('.', '', $fileInfos->getFilename())])
];
}
}
}
}
}
// Calcul du point central
// Calculer le centre géographique
$totalLat = 0;
@ -443,34 +427,38 @@ class geogallery extends common
}
// Fonction pour convertir les coordonnées GPS au format décimal
private function gps_decimal($coordinate, $hemisphere)
{
// Extrait les degrés, minutes et secondes
$degrees = count($coordinate) > 0 ? $this->gps2Num($coordinate[0]) : 0;
$minutes = count($coordinate) > 1 ? $this->gps2Num($coordinate[1]) : 0;
$seconds = count($coordinate) > 2 ? $this->gps2Num($coordinate[2]) : 0;
// Extrait les degrés, minutes et secondes et force la conversion en flottant
$degrees = count($coordinate) > 0 ? (float)$this->gps2Num($coordinate[0]) : 0.0;
$minutes = count($coordinate) > 1 ? (float)$this->gps2Num($coordinate[1]) : 0.0;
$seconds = count($coordinate) > 2 ? (float)$this->gps2Num($coordinate[2]) : 0.0;
// Convertit les degrés, minutes et secondes en décimal
$decimal = $degrees + ($minutes / 60) + ($seconds / 3600);
// Convertit les degrés, minutes et secondes en décimal (assure le type flottant)
$decimal = $degrees + ($minutes / 60.0) + ($seconds / 3600.0);
// Si l'hémisphère est au Sud ou à l'Ouest, les coordonnées sont négatives
$decimal *= ($hemisphere == 'S' || $hemisphere == 'W') ? -1 : 1;
if ($hemisphere == 'S' || $hemisphere == 'W') {
$decimal *= -1.0; // Multiplie par -1.0 pour assurer le type flottant
}
return $decimal;
}
// Fonction pour convertir les coordonnées GPS en nombre
private function gps2Num($coordPart)
{
$parts = explode('/', $coordPart);
if (count($parts) <= 0)
return 0;
if (count($parts) == 1)
return $parts[0];
return floatval($parts[0]) / floatval($parts[1]);
if (count($parts) <= 0) {
return 0.0; // Retourne 0.0 explicitement en flottant
}
if (count($parts) == 1) {
return (float)$parts[0]; // Convertit en flottant même s'il y a un seul élément
}
return floatval($parts[0]) / floatval($parts[1]); // Résultat de la division en flottant
}
// Fonction pour calculer la distance entre deux points géographiques
private function haversineGreatCircleDistance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371)
{

View File

@ -18,8 +18,9 @@ $(document).ready(function () {
const jsonOptions = '<?php echo json_encode($module::$galleriesCenter); ?>';
const objOptions = JSON.parse(jsonOptions);
// Initialisation de la carte
var map = L.map('map').setView([objOptions.lat, objOptions.long], objOptions.zoom - 1);
const map = L.map('map').setView([objOptions.lat, objOptions.long], objOptions.zoom - 1);
// Ajouter une couche de tuiles OpenStreetMap
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
@ -34,7 +35,7 @@ $(document).ready(function () {
// Ajouter les marqueurs à la carte
obj.forEach(function (location) {
var marker = L.marker([location.lat, location.long], {
const marker = L.marker([location.lat, location.long], {
title: location.label
});
marker.addTo(map);