Aller au contenu

Google API


Messages recommandés

Bonjour à tous,

J'ai un nas DS220j, avec DSM 7.0-41890.
Sur celui-ci j'ai installé les paquets Webstation et PHP 7.4.
Je l'utilise pour moi même, notamment pour automatiser la création de mes devis, et autre.
Jusqu'ici aucun problème, PHP s’exécute bien, et je ne rencontre pas de difficultés.

Afin d'automatiser le calcul des distances vers mes lieux d'intervention je souhaite utiliser  l'API google distance matrix via le script ci-dessous :

  <form action="testapi.php">
Aller à : <input type="text" name="destination">
  <input type="submit" name="submit" value="Get distance">
</form>
 <?php
  if (isset($_GET['submit'])) {
  
    $origin = 'Larçay 37270';
    $destination = $_GET['destination'];
   $url='https://maps.googleapis.com/maps/api/distancematrix/json?destinations='.urlencode($destination).'&origins='.urlencode($origin).'&key=X&language=fr-Fr&sensor=false';
   $distance_data = file_get_contents($url);
   var_dump($url);
   echo '</br>';
   var_dump($distance_data);
   echo '</br>';
   print_r(error_get_last());

J'obtiens l'erreur suivante : No such file or directory [file] => /volume1/web/testapi.php [line] => 22 , et $ distance_data est null
file_get_contents ne parviens pas à accéder à l'URL dont j'ai besoin, alors que depuis mon serveur OVH ce script fonctionne parfaitement !

Quelqu'un aurait-il une idée de ce qui pourrait se passer ? Mon IP serait bloquée ? Problème de certificat SSL ?

J'espère être précis dans ma demande, n'hésitez pas à me poser plus de questions si besoin,
Merci à tous,
Kevin

 

 

Modifié par Kevinleg
Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous cela fonctionne avec curl !

 

 $url='https://maps.googleapis.com/maps/api/distancematrix/json?destinations='.urlencode($destination).'&origins='.urlencode($origin).'&key=maclé&language=fr-Fr&sensor=false';
//Test curl
echo 'Test Curl</br>';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);
//Test curl

 

Lien vers le commentaire
Partager sur d’autres sites

@Kevinleg bonjour,
Tu peux recuperer $response en tableau (array) formaté lisible via json_decode
$Datas = json_decode($response, true);

$Datas['rows'][0]['elements'][0]['distance']['text']  dans ton unité de distance
$Datas['rows'][0]['elements'][0]['distance']['value']  en metre
$Datas['rows'][0]['elements'][0]['duration']['text']  en heure et min
$Datas['rows'][0]['elements'][0]['duration']['value'] = en seconde

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Merci beaucoup cadkey !
Effectivement j'ai fait exactement comme ça ...

	$distance_arr = json_decode($response);
if ($distance_arr->status=='OK') {
	$destination_addresses = $distance_arr->destination_addresses[0];
	$origin_addresses = $distance_arr->origin_addresses[0];
} else {
	$erreur_adresse = "<p>La requète est invalide</p>";
}
	if ($origin_addresses=="" or $destination_addresses=="") {
		$erreur_adresse =  "<p>Destination non trouvée</p>";
	}
	// récupérer les éléments dans un tableau
	$elements = $distance_arr->rows[0]->elements;
	$distance = $elements[0]->distance->text;
	$duration = $elements[0]->duration->text;
	}


Je me rends compte que j'étais tellement content que ça fonctionne je n'ai pas partagé la solution en entier.


Par défaut curl n'est pas activé dans php sur webstation pour faire celà il faut effectuer la manip suivante :


aller dans web station > parametres du langage de script > modifier un profil php > extensions >  cocher curl

Si d'autres ont le même souci j'espère que ça aidera.

PS : J'ai également trouvé un script d'auto complétion pour renseigner l'adresse de destination et de départ :
https://github.com/lewagon/google-place-autocomplete

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.