2012-05-24 18 views
13

Sto tentando di analizzare la risposta JSON dall'API di Google Geocode ma ho qualche problema a capirlo.Analisi di Google Geocoding JSON con PHP

Per chi non conosce l'API Geocode qui è l'URL: http://maps.google.com/maps/api/geocode/json?address=albert%20square&sensor=false

Sto utilizzando il seguente codice per analizzare la richiesta

<?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); 

?> 

E io sto cercando di uscita con il seguente:

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

Non sono sicuro del motivo per cui non viene echeggiato nulla. Ho anche provato $json[0]['results'][0]['formated_address']. So che questa è una domanda noob, ma gli array multidimensionali mi confondono.

+5

Questa domanda sembra essere fuori tema perché si tratta di un errore di ortografia, qualcosa che difficilmente può aiutare gli altri alla ricerca di problemi relativi all'argomento. – DaveRandom

risposta

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

Aiuta se si scrive correttamente ;-)

+5

doh! Io sono un tale idiota a volte –

7

... appena cronaca, la richiesta URL JSON deve essere formattato correttamente al fine di restituire qualcosa di buono altrimenti si può ottenere una risposta NULL.

Ad esempio, questo è il modo a recuperare longitudine e latitudine valori della risposta JSON:

// 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; 

... inoltre, è possibile utilizzare lo stesso codice per codificare la Google Map iframe e incorporare nella pagina di se l'API v3 non si comporta ... vedere semplice tutorial qui: http://pmcds.ca/blog/embedding-google-maps-into-the-webpage.html

incorporare il non è esattamente l'approccio giusto, ma ci sono momenti in cui diventa necessario soluzione.

+0

Io userei 'urlencode()' invece di 'str_replace()', questo si prende cura degli spazi e di ogni altro carattere speciale per l'indirizzo. –