Bonjour,
Je recontre un problème pour intégrer ma clé API Google.
Voici mon code lorsque tout fonctionné (avant l'arrivée de cette clé API imposée par Google) :
function getDistance($adresse1,$adresse2){
$adresse1 = str_replace(" ", "+", $adresse1);
$adresse2 = str_replace(" ", "+", $adresse2);
$url='http://maps.google.com/maps/api/directions/xml?language=fr&origin='.$adresse1.'&destination='.$adresse2.'&sensor=false';
$xml=file_get_contents($url);
$root = json_decode ($json);
$distance=$root->route->leg->distance->value;
if ($root->status == "OK")
{
return intval($distance);
}
else
{
return 0;
}
}
J'ai tenté de faire ceci (avec l'aide d'un ami) mais ça ne fonctionne pas non plus.
function getDistance($adresse1,$adresse2){
$adresse1 = str_replace(" ", "+", $adresse1);
$adresse2 = str_replace(" ", "+", $adresse2);
$api = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=".$adresse1."&destinations=".$adresse2."&key=MA_CLE_API");
$data = json_decode($api);
$distance = $data->rows[0]->elements[0]->distance->value / 1000;
var_dump($distance);
die();
return intval($distance);
}
Grace à mon code (avant que Google n'impose la clé API), je pouvais calculer la distance de mon domicile à une destination afin de determiner des frais de déplacement :
EXEMPLE : le client renseignait mon formulaire et à la question "souhaitez vous que je me déplace ?", le client devait simplement indiquer le nom de sa ville (dans un champ vide) et valider pour voir apparaitre les frais lié à ce déplacement.
Mais depuis le changement de Google, les frais affichés lorsque le client valide le champ (VILLE) ne sont plus correct. Le script puise systématiquement sur la sommes la plus élevée (150€).
Pour information, j'ai programmé mes frais de déplacement comme suivant : 20€ pour 15 à 30 km, 30€ pour 30 à 60 km, 70€ pour 60 à 120 km et 150€ de 120 à 200km.
En se basant sur une ville comme Paris comme point de départ, et lorsque le client indique une ville en dessous de 30km, le script affiche par erreur 150€ au lien de 20€.
Je ne parbiens pas à trouver mon erreur.
Merci d'avance pour votre aide
Je reviens vers vous, car j'ai trouvé la solution à mon problème.
Pour que ça serve à d'autre, je mets ici la solution pour ceux qui seraient confronter au même problème que moi.
Voici mon script avant l'arrivée des CLÉ API imposées par Google.
function getDistance($adresse1,$adresse2){around $adresse1 = str_replace(" ", "+", $adresse1);around $adresse2 = str_replace(" ", "+", $adresse2);around $url='http://maps.google.com/maps/api/directions/xml?language=fr&origin='.$adresse1.'&destination='.$adresse2.'&sensor=false';around $xml=file_get_contents($url);around $root = json_decode ($json);around around $distance=$root->route->leg->distance->value;around around if ($root->status == "OK")around {around return intval($distance);around }around elsearound {around return 0;around }around}
Et voici maintenant le code corrigé avec la clé API Google.
Il faut bien sûr remplacer "MA_CLE_API" par votre clé API.
[I]Pour ceux qui ne savent pas comment se procurer une clé API, rendez-vous ici pour vous procurer votre propre clé API Google : https://cloud.google.com/maps-platform/?hl=fr
IMPORTANT : il faut aussi activer la facturation auprès de Google en renseignant votre CB (mais pas d'inquiétude, si vous êtes un petit site internet, et qu'il il ne génère que très peu de trafic, Google ne vous facturera rien ou vraiment très très peu...).[/I]
function getDistance($adresse1,$adresse2){around $adresse1 = str_replace(" ", "+", $adresse1);around $adresse2 = str_replace(" ", "+", $adresse2);around $api = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=".$adresse1."&destinations=".$adresse2."&key=MA_CLE_API");around$data = json_decode($api);around$distance = $data->rows[0]->elements[0]->distance->value / 1000;around var_dump($distance);arounddie();around return intval($distance);around}
IMPORTANT : Il faut aussi corriger tout les liens Google qui apparaitraient dans le code de vos pages comme suivant :
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
par
<script src="https://maps.googleapis.com/maps/api/js?key=MA_CLE_API" type="text/javascript"></script>
Voilà;)