Est-ce qu'il y a une bonne âme pour m'aider ?
Je dois m'occuper d'un site qui affiche des boutiques aux alentours d'une adresse d'un formulaire.
La fonction récupère la longitude et la latitude à partir de l'API de Goggle Map.
Les variables sont bien récupérées pour la suite, toutefois j'ai une erreur dans les résultats, un décalage entre 50 et 100 Km (quand même).
J'ai testé en mettant en dur les coordonnées pour tester, ça marche parfaitement, le problème vient bien des variables $latitude et $longitude qui, bien qu'ayant les bonnes valeurs, n'engendrent pas le bon résultat.
Voici la portion du code en question :
Merci à vous
$coordonnees = recupererPointsCoordonnees($adresseZoneGeographique." ".$codePostalZoneGeographique." ".$villeZoneGeographique." France");
if($ville_vrai != 1 || $latitude == 0){
$latitude = $latitude_geo;
$longitude = $longitude_geo;
}
$latitude2 = $latitude * pi()/180;
$longitude2 = $longitude * pi()/180;
// Listing magasins
if($_POST['adresseZoneGeographique'] != "" or $_POST['codePostalZoneGeographique'] !="" or $_POST['villeZoneGeographique'] !=""){
$zoom=$zoom_recherche[valeur];
$pointsrelais = $DB_site->query("SELECT m.*, (6366 * (pi()/2 - asin( sin((latitude*pi()/180) ) * sin($latitude2) + cos((longitude*pi()/180) - $longitude2) * cos((latitude*pi()/180) ) * cos($latitude2) ))) AS proximite
FROM magasin m
ORDER BY proximite ASC");
$nombre = $DB_site->query_first("SELECT count(m.magasinid), (6366 * (pi()/2 - asin( sin((latitude*pi()/180) ) * sin($latitude2) + cos((longitude*pi()/180) - $longitude2) * cos((latitude*pi()/180) ) * cos($latitude2) ))) AS proximite
FROM magasin m
WHERE (6366 * (pi()/2 - asin( sin((latitude*pi()/180) ) * sin($latitude2) + cos((longitude*pi()/180) - $longitude2) * cos((latitude*pi()/180) ) * cos($latitude2) ))) < $parametre_kilometre[valeur]
ORDER BY proximite ASC");
$proches="<u>Les boutiques les plus proches:</u>";
$j=3;
}else{
$distances=1;
$j=1;
$zoom=$zoom_defaut[valeur];
$pointsrelais = $DB_site->query("SELECT replace(m.denomination,' ','') as essai, m.*, (6366 * (pi()/2 - asin( sin((latitude*pi()/180) ) * sin($latitude2) + cos((longitude*pi()/180) - $longitude2) * cos((latitude*pi()/180) ) * cos($latitude2) ))) AS proximite
FROM magasin m
ORDER BY essai ASC");
$nombre = $DB_site->query_first("SELECT replace(m.denomination,' ','') as essai,count(m.magasinid), (6366 * (pi()/2 - asin( sin((latitude*pi()/180) ) * sin($latitude2) + cos((longitude*pi()/180) - $longitude2) * cos((latitude*pi()/180) ) * cos($latitude2) ))) AS proximite
FROM magasin m
ORDER BY essai ASC");
}
$compteurPR = 0;
$p=1;
if(!$nombre[0]){
$zoom=$zoom_defaut[valeur];
$j=1;
$message_erreur = $DB_site->query_first("SELECT * FROM textepersonnel WHERE textepersonnelid=12");
$erreurs=$message_erreur[contenuFR];
$pointsrelais = $DB_site->query("SELECT m.*, (6366 * (pi()/2 - asin( sin((latitude*pi()/180) ) * sin($latitude2) + cos((longitude*pi()/180) - $longitude2) * cos((latitude*pi()/180) ) * cos($latitude2) ))) AS proximite
FROM magasin m
ORDER BY proximite ASC ");
$nombre = $DB_site->query_first("SELECT count(m.magasinid), (6366 * (pi()/2 - asin( sin((latitude*pi()/180) ) * sin($latitude2) + cos((longitude*pi()/180) - $longitude2) * cos((latitude*pi()/180) ) * cos($latitude2) ))) AS proximite
FROM magasin m
ORDER BY proximite ASC");
$distances=2;
}
while ($pointrelais = $DB_site->fetch_array($pointsrelais)){
if($distances!=1){
$pointrelais[proximite]=number_format(round($pointrelais[proximite],3), 2, '.', ' ');
$distance="Distance : $pointrelais[proximite] kms";
}
$lien="boutique-".url_rewrite($pointrelais[denomination])."-$pointrelais[magasinid].htm";
$image="";
// Map