Probleme Variable Geolocalisation

Petit nouveau ! | 1 Messages

20 mars 2013, 01:26

Bonjour à tous,

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
Modifié en dernier par zeus le 21 mars 2013, 10:32, modifié 1 fois.
Raison : Ajout des balises de mises en forme