geogallery const dans jquery
This commit is contained in:
parent
e44bd9f118
commit
d57f4ca503
@ -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":""}
|
@ -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
|
- GeoGallery est basé sur le module gallery 4.1
|
@ -154,8 +154,7 @@ class geogallery extends common
|
|||||||
'name' => $this->getInput('galleryAddName'),
|
'name' => $this->getInput('galleryAddName'),
|
||||||
'directory' => $this->getInput('galleryAddDirectory', helper::FILTER_STRING_SHORT, true),
|
'directory' => $this->getInput('galleryAddDirectory', helper::FILTER_STRING_SHORT, true),
|
||||||
],
|
],
|
||||||
'legend' => [],
|
'legend' => []
|
||||||
'position' => []
|
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
$success = true;
|
$success = true;
|
||||||
@ -234,13 +233,6 @@ class geogallery extends common
|
|||||||
foreach ($legend as $file => $data) {
|
foreach ($legend as $file => $data) {
|
||||||
$legends[str_replace('.', '', $file)] = empty($data) ? $file : helper::filter($data, helper::FILTER_STRING_SHORT);
|
$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
|
// Sauvegarder
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'module',
|
'module',
|
||||||
@ -253,9 +245,7 @@ class geogallery extends common
|
|||||||
'name' => $this->getData(['module', $this->getUrl(0), 'content', $this->getUrl(2), 'config', 'name']),
|
'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']),
|
'directory' => $this->getData(['module', $this->getUrl(0), 'content', $this->getUrl(2), 'config', 'directory']),
|
||||||
],
|
],
|
||||||
'legend' => $legends,
|
'legend' => $legends
|
||||||
//'geo' => $geo,
|
|
||||||
'position' => $geo
|
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -375,22 +365,16 @@ class geogallery extends common
|
|||||||
'long' => $this->gps_decimal($exif['GPSLongitude'], $exif['GPSLatitudeRef']),
|
'long' => $this->gps_decimal($exif['GPSLongitude'], $exif['GPSLatitudeRef']),
|
||||||
'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' => $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())]))
|
||||||
];
|
? ''
|
||||||
} else {
|
: $this->getData(['module', $this->getUrl(0), 'content', $gallery, 'legend', str_replace('.', '', $fileInfos->getFilename())])
|
||||||
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())])
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Calcul du point central
|
|
||||||
|
|
||||||
// Calculer le centre géographique
|
// Calculer le centre géographique
|
||||||
$totalLat = 0;
|
$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)
|
private function gps_decimal($coordinate, $hemisphere)
|
||||||
{
|
{
|
||||||
// Extrait les degrés, minutes et secondes
|
// Extrait les degrés, minutes et secondes et force la conversion en flottant
|
||||||
$degrees = count($coordinate) > 0 ? $this->gps2Num($coordinate[0]) : 0;
|
$degrees = count($coordinate) > 0 ? (float)$this->gps2Num($coordinate[0]) : 0.0;
|
||||||
$minutes = count($coordinate) > 1 ? $this->gps2Num($coordinate[1]) : 0;
|
$minutes = count($coordinate) > 1 ? (float)$this->gps2Num($coordinate[1]) : 0.0;
|
||||||
$seconds = count($coordinate) > 2 ? $this->gps2Num($coordinate[2]) : 0;
|
$seconds = count($coordinate) > 2 ? (float)$this->gps2Num($coordinate[2]) : 0.0;
|
||||||
|
|
||||||
// Convertit les degrés, minutes et secondes en décimal
|
// Convertit les degrés, minutes et secondes en décimal (assure le type flottant)
|
||||||
$decimal = $degrees + ($minutes / 60) + ($seconds / 3600);
|
$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
|
||||||
$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;
|
return $decimal;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fonction pour convertir les coordonnées GPS en nombre
|
|
||||||
private function gps2Num($coordPart)
|
private function gps2Num($coordPart)
|
||||||
{
|
{
|
||||||
$parts = explode('/', $coordPart);
|
$parts = explode('/', $coordPart);
|
||||||
if (count($parts) <= 0)
|
if (count($parts) <= 0) {
|
||||||
return 0;
|
return 0.0; // Retourne 0.0 explicitement en flottant
|
||||||
if (count($parts) == 1)
|
}
|
||||||
return $parts[0];
|
if (count($parts) == 1) {
|
||||||
return floatval($parts[0]) / floatval($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
|
// 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)
|
||||||
{
|
{
|
||||||
|
@ -18,8 +18,9 @@ $(document).ready(function () {
|
|||||||
const jsonOptions = '<?php echo json_encode($module::$galleriesCenter); ?>';
|
const jsonOptions = '<?php echo json_encode($module::$galleriesCenter); ?>';
|
||||||
const objOptions = JSON.parse(jsonOptions);
|
const objOptions = JSON.parse(jsonOptions);
|
||||||
|
|
||||||
|
|
||||||
// Initialisation de la carte
|
// 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
|
// Ajouter une couche de tuiles OpenStreetMap
|
||||||
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||||||
@ -34,7 +35,7 @@ $(document).ready(function () {
|
|||||||
|
|
||||||
// Ajouter les marqueurs à la carte
|
// Ajouter les marqueurs à la carte
|
||||||
obj.forEach(function (location) {
|
obj.forEach(function (location) {
|
||||||
var marker = L.marker([location.lat, location.long], {
|
const marker = L.marker([location.lat, location.long], {
|
||||||
title: location.label
|
title: location.label
|
||||||
});
|
});
|
||||||
marker.addTo(map);
|
marker.addTo(map);
|
||||||
|
Loading…
Reference in New Issue
Block a user