places para nearby google busquedas busqueda address_components php json curl maps

nearby - Uso de PHP(curl) para extraer datos de JSON(API de Google Maps)



google maps api search (2)

Soy bastante nuevo en JSON, y estoy tratando de obtener la latitud y la longitud de una ciudad geocodificada a partir de la API de Google Maps usando curl. La función que estoy usando es:

function geocode($city){ $cityclean = str_replace (" ", "+", $city); $details_url = "http://maps.googleapis.com/maps/api/geocode/json?address=" . $cityclean . "&sensor=false"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $details_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $geoloc = json_decode(curl_exec($ch), true); $step1 = $geoloc[''results'']; $step2 = $step1[''geometry'']; $coords = $step2[''location'']; print $coords[''lat'']; print $coords[''lng'']; }

El objetivo de todo eso es extraer los valores de lat y lng de la matriz Resultados -> Geometría -> Ubicación del siguiente JSON:

{ "status": "OK", "results": [ { "types": [ "locality", "political" ], "formatted_address": "Westminster, London, UK", "address_components": [ { "long_name": "London", "short_name": "London", "types": [ "locality", "political" ] }, { "long_name": "Westminster", "short_name": "Westminster", "types": [ "administrative_area_level_3", "political" ] }, { "long_name": "Greater London", "short_name": "Greater London", "types": [ "administrative_area_level_2", "political" ] }, { "long_name": "England", "short_name": "England", "types": [ "administrative_area_level_1", "political" ] }, { "long_name": "United Kingdom", "short_name": "GB", "types": [ "country", "political" ] } ], "geometry": { "location": { "lat": 51.5001524, "lng": -0.1262362 }, "location_type": "APPROXIMATE", "viewport": { "southwest": { "lat": 51.3493528, "lng": -0.3783580 }, "northeast": { "lat": 51.7040647, "lng": 0.1502295 } }, "bounds": { "southwest": { "lat": 51.3493528, "lng": -0.3783580 }, "northeast": { "lat": 51.7040647, "lng": 0.1502295 } } } } ] }

Sin embargo, no imprime nada. Sé que la función recupera con éxito el JSON de Google y lo trae a mi servidor, ya que hice una declaración de impresión para el valor de "estado" y me devolvió "OK". El problema parece ser cuando intento profundizar en el JSON.

Lo siento si es un problema sencillo, pero como dije, soy nuevo en esto y ahora me estoy volviendo loco.

¡Muchas gracias! :)


Solo necesitas esto:

$fullurl = "http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true"; $string .= file_get_contents($fullurl); // get json content $json_a = json_decode($string, true); //json decoder echo $json_a[''results''][0][''geometry''][''location''][''lat'']; // get lat for json echo $json_a[''results''][0][''geometry''][''location''][''lng'']; // get ing for json


Tenga en cuenta que parece que los results contienen una matriz (con solo un elemento en ella, aquí) de resultados; y la geometry es un elemento dentro de un resultado.

Aquí, puede ver que el contenido de los resultados está delimitado por [] , lo que indica que es una matriz.


Entonces, primero debes acceder al primer resultado: $geoloc[''results''][0]
Dentro de la cual tendrá la geometría: $geoloc[''results''][0][''geometry'']

Lo que te permitirá obtener la latitud y longitud:

var_dump($geoloc[''results''][0][''geometry''][''location''][''lat'']); var_dump($geoloc[''results''][0][''geometry''][''location''][''lng'']);


Supongo que, dependiendo de la dirección que haya buscado, a veces tendrá más de un elemento en la matriz de results .