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&region=$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.

23
demandé sur Sergio Tulentsev 2011-12-26 10:47:27

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&region=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;
39
répondu priyank saini 2012-07-09 14:22:20
$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&region=$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.

37
répondu Code Lღver 2011-12-26 06:56:11
//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&region=$region");

echo $json;

$decoded = json_decode($json);

print_r($decoded);
8
répondu Sudhir Bastakoti 2017-08-25 17:48:24

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.
4
répondu Max 2011-12-26 06:51:59
$address = str_replace(" ", "+", $address);

$json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false&region=$region");
$json = json_decode($json);

$lat = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lat'};
$long = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lng'};
1
répondu shailendra Kumar pathak 2015-05-20 08:24:03

...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&region=$region");
$json = json_decode($json);

$lat = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lat'};
$long = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lng'};
echo $lat."</br>".$long;
0
répondu bromelio 2014-06-13 13:31:50