2012-05-24 18 views
13

Estoy tratando de analizar la respuesta json de la API de Google Geocode pero estoy teniendo problemas para entenderlo.Analizando Google Geocoding JSON con PHP

Para aquellos no familiarizados con la API de geocodificación aquí es la dirección URL: http://maps.google.com/maps/api/geocode/json?address=albert%20square&sensor=false

estoy usando el siguiente código para analizar la solicitud

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

?> 

Y yo estoy tratando de impresión con los siguientes:

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

No estoy seguro de por qué no se hace eco de nada. También probé $json[0]['results'][0]['formated_address']. Sé que esta es una pregunta novato, pero las matrices multidimensionales me confunden.

+5

Esta pregunta parece estar fuera de tema porque se trata de un error ortográfico, algo que es poco probable que ayude a otros a buscar problemas relacionados con el tema. – DaveRandom

Respuesta

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

Ayuda si se escribe correctamente ;-)

+5

doh! Soy tan idiota a veces –

7

... sólo para tu información, la petición de URL JSON tiene que ser formateado correctamente con el fin de devolver algo bueno de lo contrario puede obtener una respuesta NULL.

Por ejemplo, así es como puedo recuperar de longitud y latitud valores de la respuesta 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; 

... También, se puede utilizar el mismo código en el disco de código del iframe y Google Map incrustarlo en que la página si la API v3 no se comporta ... ver explicación sencilla aquí: http://pmcds.ca/blog/embedding-google-maps-into-the-webpage.html

Inserción de la no es exactamente el enfoque correcto, pero hay momentos cuando se convierte en solución necesaria.

+0

Usaría 'urlencode()' en lugar de 'str_replace()', esto cuida los espacios y cualquier otro carácter especial para la dirección. –