2011-11-16 24 views
9

Estoy utilizando el siguiente para obtener una la latitud y la longitud de un código geográfico ..¿Cómo extraer Código postal de V3 API de Google Maps

$latitude = $output->results[0]->geometry->location->lat; 
    $longitude = $output->results[0]->geometry->location->lng; 

¿Cómo se extrae el código postal de ...

{ 
    "status": "OK", 
    "results": [ { 
    "types": [ "street_address" ], 
    "formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", 
    "address_components": [ { 
     "long_name": "1600", 
     "short_name": "1600", 
     "types": [ "street_number" ] 
    }, { 
     "long_name": "Amphitheatre Pkwy", 
     "short_name": "Amphitheatre Pkwy", 
     "types": [ "route" ] 
    }, { 
     "long_name": "Mountain View", 
     "short_name": "Mountain View", 
     "types": [ "locality", "political" ] 
    }, { 
     "long_name": "California", 
     "short_name": "CA", 
     "types": [ "administrative_area_level_1", "political" ] 
    }, { 
     "long_name": "United States", 
     "short_name": "US", 
     "types": [ "country", "political" ] 
    }, { 
     "long_name": "94043", 
     "short_name": "94043", 
     "types": [ "postal_code" ] 
    } ], 
    "geometry": { 
     "location": { 
     "lat": 37.4219720, 
     "lng": -122.0841430 
     }, 
     "location_type": "ROOFTOP", 
     "viewport": { 
     "southwest": { 
      "lat": 37.4188244, 
      "lng": -122.0872906 
     }, 
     "northeast": { 
      "lat": 37.4251196, 
      "lng": -122.0809954 
     } 
     } 
    } 
    } ] 
} 

Respuesta

0

Yo diría que tendrías que pasar por results.address_components. En cada iteración, compruebe si el array de tipos contiene "postal_code". Si lo hace, guárdelo en una variable y probablemente salga también del ciclo. Aunque podría valer la pena investigar para ver si el código postal está siempre en address_component [5], lo que le ahorraría tener que realizar un bucle.

13

podría utilizar la siguiente función para extraer cualquier componente de la dirección:

function extractFromAdress(components, type){ 
    for (var i=0; i<components.length; i++) 
     for (var j=0; j<components[i].types.length; j++) 
      if (components[i].types[j]==type) return components[i].long_name; 
    return ""; 
} 

para extraer el código postal de llamar:

extractFromAdress(results[0].address_components, "postal_code"); 

pero también se puede obtener otra información interesante como:

extractFromAdress(results[0].address_components, "route"); 
extractFromAdress(results[0].address_components, "locality"); 
extractFromAdress(results[0].address_components, "country"); 

etc ...

+0

gracias, me he estado preguntando cómo hacerlo por un tiempo – Francesco

Cuestiones relacionadas