Obtenez automatiquement la latitude et la longitude en utilisant php, API
Dans une de mes applications php, je dois trouver la latitude et la longitude du lieu de l'adresse.
J'ai essayé ce code:
$json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=$region");
$json = json_decode($json);
$lat = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lat'};
$long = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lng'};
Mais il montre L'erreur suivante:
Avertissement: file_get_contents(http://maps.google.com/maps/api/geocode/json?address=technopark, trivandrun, kerala, Inde & capteur = faux & région = IND) [fonction.file-get-contents]: échec de l'ouverture du flux: échec de la requête HTTP! HTTP / 1.0 400 mauvaise requête dans D:Projectslon.php on line 4
Aidez-moi à résoudre ce problème.
6 réponses
Utiliser curl
au lieu de file_get_contents
:
$address = "India+Panchkula";
$url = "http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=India";
$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);
$response_a = json_decode($response);
echo $lat = $response_a->results[0]->geometry->location->lat;
echo "<br />";
echo $long = $response_a->results[0]->geometry->location->lng;
$address = str_replace(" ", "+", $address);
Utilisez le code ci-dessus avant le file_get_content. signifie, utilisez le code suivant
$address = str_replace(" ", "+", $address);
$json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=$region");
$json = json_decode($json);
$lat = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lat'};
$long = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lng'};
Et ça marchera sûrement. Comme l'adresse ne prend pas en charge les espaces, elle ne prend en charge que le signe + à la place de l'espace.
//add urlencode to your address $address = urlencode("technopark, Trivandrun, kerala,India"); $region = "IND"; $json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=$region"); echo $json; $decoded = json_decode($json); print_r($decoded);
Deux idées:
- L'adresse et la Région URL sont-elles codées ?
- peut-être que votre ordinateur exécutant le code n'autorise pas l'accès http. Essayez de charger une autre page (comme 'http://www.google.com') et voir si cela fonctionne. Si cela ne fonctionne pas non plus, alors il y a quelque chose qui ne va pas avec les paramètres PHP.
$address = str_replace(" ", "+", $address);
$json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=$region");
$json = json_decode($json);
$lat = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lat'};
$long = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lng'};
...et n'oubliez pas "$ region"pour que le code fonctionne:
$address = "Salzburg";
$address = str_replace(" ", "+", $address);
$region = "Austria";
$json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=$region");
$json = json_decode($json);
$lat = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lat'};
$long = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lng'};
echo $lat."</br>".$long;