La plupart des équipements de navigations transmettent les informations et coordoonées GPS à l'aide d'une trame NMEA.
Ce qui a pour conséquence, de transmettre les valeurs de Latitude et de Longitude dans le format DDMM.MMMM (degrés,minutes.décimales de minutes).
Malheureusement, ce format, n'est pas supporté par Google Map, nous obligeant de convertir les valeurs en des données "GPS" au format WG84 (DD Degré décimal).
Voici une petite fonction PHP de conversion NMEA en GPS(WG84) (DDMM.MMM to DD), pas propre qui permet de le faire 😉
Hey oui, fatigue oblige, j'ai codé comme un porc 😮
Function convertNMEAtoGPS($data,$dir) {
//conversion du format NMEA au format GPS
$ddmm_mmmm="$data";
$ddmm_mmmm=str_replace(".",";",$ddmm_mmmm);
$ddmm_mmmm=split(";",$ddmm_mmmm);
$dd=substr($ddmm_mmmm[0], 0, -2);
$mm=substr($ddmm_mmmm[0], 2);
$mm_mmmm="$mm.$ddmm_mmmm[1]";
$mmdivided=$mm_mmmm/60;
$coo=$dd+$mmdivided;
//on vérifie la direction
$dir=strtolower($dir);
if($dir=="s" OR $dir=="w")
{
$coo=$coo*(-1);
}
return $coo;
}
Utilisation :
$latitude="4622.95493";
$direction="N";
Echo convertNMEAtoGPS($latitude,$direction);
Explication :
La formule est simple :
Il faut séparer la valeur "DD" (Degré) de la partie "temps" (MM.MMM).
Puis diviser la partie temps (MM.MMMM) par 60 (le nombre de seconde dans une minute).
Et enfin additionner le résultat à la valeur "DD".
Si la valeur de la direction est "S" ou "W" (Sud ou Ouest) on multiplie le résultat par -1.