Tag: directions
PHP : Distance en KM grâce à Google Maps API Directions
by Rom's on 21 août 2010, under Développement Web
Petite fonction pour calculer la distance entre un point A et un point B grâce à l’API de Google Maps qui a été récemment ouverte pour les itinéraires (Google Maps API Directions).
Vous pouvez ainsi récupérer la distance d’un trajet, sa durée (temps de trajet), les étapes et l’adresse convertie de départ et d’arrivée (permet de récupérer une adresse postale par rapport à des coordonnées)
Vous avez ainsi la distance réelle en kilomètres par la route et non à vol d’oiseau !
function getDistance($adresse1,$adresse2) {
$url='http://maps.google.com/maps/api/directions/xml?language=fr&origin='.$adresse1.'&destination='.$adresse2.'&sensor=false';
$xml=file_get_contents($url);
$root = simplexml_load_string($xml);
$distance=$root->route->leg->distance->value;
$duree=$root->route->leg->duration->value;
$etapes=$root->route->leg->step;
return array(
'distanceEnMetres'=>$distance,
'dureeEnSecondes'=>$duree,
'etapes'=>$etapes,
'adresseDepart'=>$root->route->leg->start_address,
'adresseArrivee'=>$root->route->leg->end_address
);
}
Le guide from Google est par là : http://code.google.com/intl/fr-FR/apis/maps/documentation/directions/
ATTENTION : GOOGLE ACCEPTE UN NOMBRE LIMITE DE REQUETES (sous peine d’un status : OVER_QUERY_LIMIT). Si vous souhaitez récupérer plusieurs résultats à la suite, Il faut donc soit temporiser les requêtes et en faire une toutes les 100ms (100 millisecondes soit 100000 microsecondes, source : un script exemple de google utilise ce délai), soit suivre une méthode que je vous proposer bientôt ici même (mise en cache). Il est important de le faire dès le départ, j’en ai fait l’amère expérience, mon IP personnelle est blacklistée de façon permanente apparemment.. (suite à deux fois une dizaine de requêtes simultanées, il ne faut pas grand chose…)