2011-11-16 10 views
9

Sto usando il seguente per ottenere un lat-GNL da un geocode V3 di Google ..Come estrarre il codice postale da Maps API

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

Come faccio a estrarre il codice postale da ...

{ 
    "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 
     } 
     } 
    } 
    } ] 
} 

risposta

0

Direi che avresti bisogno di passare attraverso results.address_components. Su ogni iterazione, controlla se la matrice dei tipi contiene "codice_postale". Se lo fa, salvalo in una variabile e probabilmente anche uscire dal ciclo. Anche se potrebbe valere la pena di investigare per vedere se il codice postale è sempre in address_component [5], il che farebbe risparmiare il dover effettuare il ciclo.

13

è possibile utilizzare la seguente funzione per estrarre qualsiasi componente indirizzo:

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 ""; 
} 

Per estrarre il codice postale si chiama:

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

ma si potrebbe anche ottenere altre informazioni interessanti come:

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

ecc ...

+0

grazie, mi sono chiesto come farlo per un po ' – Francesco

Problemi correlati