25 Stimmen

Automatisches Abrufen von Breiten- und Längengraden mit php, API

In einer meiner PHP-Anwendungen muss ich die geografische Breite und Länge des Ortes aus der Adresse herausfinden.

Ich habe diesen Code ausprobiert:

$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'};

Es wird jedoch der folgende Fehler angezeigt:

Warning: file_get_contents(http://maps.google.com/maps/api/geocode/json?address=technopark, Trivandrun, kerala,India&sensor=false&region=IND) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in D:\Projects\lon.php in Zeile 4

Bitte helfen Sie mir, dieses Problem zu lösen.

40voto

priyank saini Punkte 424

Utilice curl anstelle von 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;

37voto

Code Lღver Punkte 15434
$address = str_replace(" ", "+", $address);

Verwenden Sie den obigen Code vor dem file_get_content. bedeutet, den folgenden Code zu verwenden

$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'};

und es wird sicher funktionieren. Da die Adresse keine Leerzeichen unterstützt, wird anstelle des Leerzeichens nur das + Zeichen unterstützt.

8voto

Sudhir Bastakoti Punkte 97215
//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);

4voto

Max Punkte 8501

Zwei Ideen:

  • Sind Adresse und Region URL kodiert ?
  • Vielleicht erlaubt Ihr Computer, auf dem der Code läuft, keinen http-Zugang. Versuchen Sie, eine andere Seite zu laden (wie ' http://www.google.com ') und sehen Sie, ob das funktioniert. Wenn auch das nicht funktioniert, dann stimmt etwas mit den PHP-Einstellungen nicht.

1voto

$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'};

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X