Accès API google map, failed to open stream
Hefthyn
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Kopros Messages postés 631 Statut Membre -
Kopros Messages postés 631 Statut Membre -
Bonjour,
Je suis actuellement en train de développer une partie d'une site internet qui va permettre la géolocalisation de certains lieu sur une carte. Ces lieux sont présent en base de donnée et sont entrés par des utilisateurs grâce à leur adresse. De mon côté, je dois transformer ces adresses en longitude et latitude afin de pouvoir les placer correctement.
J'utilise donc cette API que fourni google et qui permet, grâce à une adresse et retourner un paquet d'informations de localisation :
http://maps.googleapis.com/maps/api/geocode/json?address=votre_adresse,sensor=true
Quand j'y accède manuellement via mon navigateur, je n'ai aucun problème pour retrouver les informations dont j'ai besoin, seulement, lorsque j'essaye de le faire via du code afin d'automatiser la chose, je me retrouve avec une erreur :
Warning: file_get_contents(http://maps.googleapis.com/maps/api/geocode/json?address= 45 Bd H. Bazin,21002 Dijon&sensor=true): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in C:\wamp\www\papa\majbd.php on line 23
voici mon code :
J'ai vérifié mon php.ini et la variable "allow_url_fopen" est bien à "on".
J'ai aussi essayé de rajouter un context à file_get_context() que voici :
Mais ça ne fait que cacher l'erreur et ne m'avance en rien.
J'ai aussi essayé d'encoder mon url de la manière suivante :
mais à part changer l'adresse envoyée à l'API, je récupère le même message d'erreur.
Avez-vous des idées pour résoudre mon problème?
Merci d'avance.
Je suis actuellement en train de développer une partie d'une site internet qui va permettre la géolocalisation de certains lieu sur une carte. Ces lieux sont présent en base de donnée et sont entrés par des utilisateurs grâce à leur adresse. De mon côté, je dois transformer ces adresses en longitude et latitude afin de pouvoir les placer correctement.
J'utilise donc cette API que fourni google et qui permet, grâce à une adresse et retourner un paquet d'informations de localisation :
http://maps.googleapis.com/maps/api/geocode/json?address=votre_adresse,sensor=true
Quand j'y accède manuellement via mon navigateur, je n'ai aucun problème pour retrouver les informations dont j'ai besoin, seulement, lorsque j'essaye de le faire via du code afin d'automatiser la chose, je me retrouve avec une erreur :
Warning: file_get_contents(http://maps.googleapis.com/maps/api/geocode/json?address= 45 Bd H. Bazin,21002 Dijon&sensor=true): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in C:\wamp\www\papa\majbd.php on line 23
voici mon code :
$connexion = new PDO("mysql:host=localhost" . ';dbname=' . "geo_stage", "root", "");
$sql = 'SELECT * FROM institution';
$req = $connexion->query($sql);
while ($data = $req->fetch(PDO::FETCH_ASSOC))
{
if ($data['longi'] == 0)
{
$adresse = "http://maps.googleapis.com/maps/api/geocode/json?address= "
.$data['rue'] .","
.$data['CP'] . " "
.$data['ville']. "&sensor=true";
echo $adresse;
// obtention du contenu retourné par l'API google.
$json = file_get_contents($adresse,false);
$lat =0;
$long =0;
if ($json != FALSE)
{
$jsondecode = json_decode($json,true); // décode le JSon
if ($jsondecode['status']=='OK') // indique que l'adresse a été trouvée
{
$resLoc = $jsondecode['results'][0]['geometry']['location'];
$lat = $resLoc['lat']; // récupération de la latitude
$long = $resLoc['lng']; // récupération de la longitude
echo $lat;
}
}
}
J'ai vérifié mon php.ini et la variable "allow_url_fopen" est bien à "on".
J'ai aussi essayé de rajouter un context à file_get_context() que voici :
$context = stream_context_create(array(
'http' => array(
'ignore_errors'=>true,
'method'=>'GET'
)
));
Mais ça ne fait que cacher l'erreur et ne m'avance en rien.
J'ai aussi essayé d'encoder mon url de la manière suivante :
$json = file_get_contents(urlencode($adresse),false);
mais à part changer l'adresse envoyée à l'API, je récupère le même message d'erreur.
Avez-vous des idées pour résoudre mon problème?
Merci d'avance.
A voir également:
- Accès API google map, failed to open stream
- Google maps satellite - Guide
- Google maps - Guide
- Open office gratuit - Télécharger - Suite bureautique
- Google tv streamer - Accueil - TV & Vidéo
- Dns google - Guide
2 réponses
file_get_contents() est une fonction qui retourne le contenu d'un fichier. Pour le lire il faut qu'elle puisse le télécharger, et la sécurité des serveurs de Google empêche cela.
La seule solution que je vois, c'est que le php écrit une ligne de js avec l'adresse géographique recherchée, et ce js va appeler l'API de Google pour récupérer le json, puis ensuite mettre à jour l'affichage des latitude et longitude.
Si par la suite du dois traiter ces données avec php, faudra passer par de l'ajax.
Bon courage !
La seule solution que je vois, c'est que le php écrit une ligne de js avec l'adresse géographique recherchée, et ce js va appeler l'API de Google pour récupérer le json, puis ensuite mettre à jour l'affichage des latitude et longitude.
Si par la suite du dois traiter ces données avec php, faudra passer par de l'ajax.
Bon courage !
Ce que je ne comprends pas, c'est que j'avais utilisé exactement le même code l'année dernière pour un autre projet et je n'avais eu aucun soucis.
Après il est vrai que j'avais utilisé ce code dans un projet développé avec Drupal 7 et que j'avais créer un module à part, mais je doute que ça change grand chose. A moins que le dit projet possédait une clé pour l'API google map, ce qui me donnait le droit de récupérer le code JSON ?
Après il est vrai que j'avais utilisé ce code dans un projet développé avec Drupal 7 et que j'avais créer un module à part, mais je doute que ça change grand chose. A moins que le dit projet possédait une clé pour l'API google map, ce qui me donnait le droit de récupérer le code JSON ?