2012-05-24 20 views
13

Ich versuche, die JSON-Antwort von der Google Geocode API zu analysieren, aber ich habe ein wenig Schwierigkeiten, es zu verstehen.Analysieren von Google Geocoding JSON mit PHP

Für jene die nicht mit dem Geocode API ist hier die URL: http://maps.google.com/maps/api/geocode/json?address=albert%20square&sensor=false

ich den folgenden Code bin mit dem Wunsch

<?php 

$address = urlencode($_POST['address']); 
$request = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=" . $address . "&sensor=false"); 
$json = json_decode($request, true); 

?> 

Und ich versuche, die Ausgabe mit dem folgenden zu analysieren:

echo $json['results'][0]['formated_address']; 

Ich bin mir nicht sicher, warum nichts geantwortet wird. Ich habe auch versucht $json[0]['results'][0]['formated_address']. Ich weiß, das ist eine Frage ohne Frage, aber mehrdimensionale Arrays verwirren mich.

+5

Diese Frage scheint off-topic zu sein, weil es sich um einen Rechtschreibfehler handelt, der anderen bei der Suche nach Problemen im Zusammenhang mit dem Thema wahrscheinlich nicht hilft. – DaveRandom

Antwort

12
echo $json['results'][0]['formatted_address']; 

Es hilft, wenn man es richtig buchstabieren ;-)

+5

doh! Ich bin so ein Idiot manchmal –

7

... nur FYI, hat die JSON URL richtig um etwas zurück gut anders formatiert werden Sie NULL Antwort erhalten kann.

Zum Beispiel ist dies, wie ich Längen- und Breitengrad Werte aus der JSON-Antwort abrufen:

// some address values 
    $client_address = '123 street'; 
    $client_city = 'Some City'; 
    $client_state = 'Some State'; 
    $client_zip = 'postal code'; 

// building the JSON URL string for Google API call 
    $g_address = str_replace(' ', '+', trim($client_address)).","; 
    $g_city = '+'.str_replace(' ', '+', trim($client_city)).","; 
    $g_state = '+'.str_replace(' ', '+', trim($client_state)); 
    $g_zip  = isset($client_zip)? '+'.str_replace(' ', '', trim($client_zip)) : ''; 

$g_addr_str = $g_address.$g_city.$g_state.$g_zip;  
$url = "http://maps.google.com/maps/api/geocode/json? 
     address=$g_addr_str&sensor=false"; 

// Parsing the JSON response from the Google Geocode API to get exact map coordinates: 
// latitude , longitude (see the Google doc. for the complete data return here: 
// https://developers.google.com/maps/documentation/geocoding/.) 

$jsonData = file_get_contents($url); 

$data = json_decode($jsonData); 

$xlat = $data->{'results'}[0]->{'geometry'}->{'location'}->{'lat'}; 
$xlong = $data->{'results'}[0]->{'geometry'}->{'location'}->{'lng'}; 

echo $xlat.",".$xlong; 

... auch, können Sie den gleichen Code zu hart Code des Google Map iframe und es in Ihnen Seite einbetten, wenn die v3 API verhält sich nicht ... einfache Anleitung siehe hier: http://pmcds.ca/blog/embedding-google-maps-into-the-webpage.html

die Einbettung ist nicht genau der richtige Ansatz aber es gibt Zeiten, wenn es Lösung benötigt wird.

+0

Ich würde 'urlencode()' anstelle von 'str_replace()' verwenden, das kümmert sich um die Leerzeichen und andere Sonderzeichen für die Adresse. –

Verwandte Themen