Geogallery position des marqueurs à l'ouest de Greenwich

This commit is contained in:
Fred Tempez 2024-08-23 21:02:54 +02:00
parent d57f4ca503
commit bc65ce5da2

View File

@ -283,7 +283,7 @@ class geogallery extends common
$latitude = 'Donnée absente'; $latitude = 'Donnée absente';
$longitude = 'Donnée absente'; $longitude = 'Donnée absente';
// Vérifier si les données EXIF contiennent des informations de géolocalisation // Vérifier si les données EXIF contiennent des informations de géolocalisation
if (!empty($exif['GPSLatitude']) && !empty($exif['GPSLongitude'])) { if (!empty($exif['GPSLatitude']) || !empty($exif['GPSLongitude'])) {
// Coordonnées de latitude // Coordonnées de latitude
$latitude = $this->gps_decimal($exif['GPSLatitude'], $exif['GPSLatitudeRef']); $latitude = $this->gps_decimal($exif['GPSLatitude'], $exif['GPSLatitudeRef']);
@ -359,15 +359,20 @@ class geogallery extends common
// Vérifier si les données EXIF contiennent des informations de géolocalisation // Vérifier si les données EXIF contiennent des informations de géolocalisation
if (!empty($exif['GPSLatitude']) || !empty($exif['GPSLongitude'])) { if (!empty($exif['GPSLatitude']) || !empty($exif['GPSLongitude'])) {
// Coordonnées de latitude
$latitude = $this->gps_decimal($exif['GPSLatitude'], $exif['GPSLatitudeRef']);
// Coordonnées de longitude
$longitude = $this->gps_decimal($exif['GPSLongitude'], $exif['GPSLongitudeRef']);
// Coordonnées // Coordonnées
self::$galleries[] = [ self::$galleries[] = [
'lat' => $this->gps_decimal($exif['GPSLatitude'], $exif['GPSLatitudeRef']), 'lat' => $latitude,
'long' => $this->gps_decimal($exif['GPSLongitude'], $exif['GPSLatitudeRef']), 'long' => $longitude,
'img' => $fileInfos->getPath() . '/' . strtolower($fileInfos->getFilename()), 'img' => $fileInfos->getPath() . '/' . strtolower($fileInfos->getFilename()),
'thumb' => str_replace('source', 'thumb', $fileInfos->getPath()) . '/' . self::THUMBS_SEPARATOR . strtolower($fileInfos->getFilename()), 'thumb' => str_replace('source', 'thumb', $fileInfos->getPath()) . '/' . self::THUMBS_SEPARATOR . strtolower($fileInfos->getFilename()),
'label' => is_null($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())]) : $this->getData(['module', $this->getUrl(0), 'content', $gallery, 'legend', str_replace('.', '', $fileInfos->getFilename())])
]; ];
} }
} }
@ -433,10 +438,10 @@ class geogallery extends common
$degrees = count($coordinate) > 0 ? (float)$this->gps2Num($coordinate[0]) : 0.0; $degrees = count($coordinate) > 0 ? (float)$this->gps2Num($coordinate[0]) : 0.0;
$minutes = count($coordinate) > 1 ? (float)$this->gps2Num($coordinate[1]) : 0.0; $minutes = count($coordinate) > 1 ? (float)$this->gps2Num($coordinate[1]) : 0.0;
$seconds = count($coordinate) > 2 ? (float)$this->gps2Num($coordinate[2]) : 0.0; $seconds = count($coordinate) > 2 ? (float)$this->gps2Num($coordinate[2]) : 0.0;
// Convertit les degrés, minutes et secondes en décimal (assure le type flottant) // Convertit les degrés, minutes et secondes en décimal (assure le type flottant)
$decimal = $degrees + ($minutes / 60.0) + ($seconds / 3600.0); $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 // Si l'hémisphère est au Sud ou à l'Ouest, les coordonnées sont négatives
if ($hemisphere == 'S' || $hemisphere == 'W') { if ($hemisphere == 'S' || $hemisphere == 'W') {
$decimal *= -1.0; // Multiplie par -1.0 pour assurer le type flottant $decimal *= -1.0; // Multiplie par -1.0 pour assurer le type flottant
@ -444,7 +449,7 @@ class geogallery extends common
return $decimal; return $decimal;
} }
private function gps2Num($coordPart) private function gps2Num($coordPart)
{ {
@ -456,8 +461,8 @@ class geogallery extends common
return (float)$parts[0]; // Convertit en flottant même s'il y a un seul élément 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 return floatval($parts[0]) / floatval($parts[1]); // Résultat de la division en flottant
} }
// Fonction pour calculer la distance entre deux points géographiques // Fonction pour calculer la distance entre deux points géographiques
private function haversineGreatCircleDistance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371) private function haversineGreatCircleDistance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371)