2011-11-16 17 views
9

używam następujących aby dostać się LAT-LNG z Geokodując ..Jak wyodrębnić kod pocztowy od V3 Google Maps API

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

Jak wyodrębnić kod pocztowy z ...

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

Odpowiedz

0

Powiedziałbym, że trzeba przechodzić przez results.address_components. Przy każdej iteracji sprawdź, czy tablica typów zawiera "kod pocztowy". Jeśli tak, zapisz to zmiennej i prawdopodobnie również wyrwie się z pętli. Chociaż warto sprawdzić, czy kod pocztowy jest zawsze w address_component [5], co pozwoliłoby na zaoszczędzenie pętli.

13

Można użyć następujących funkcji, aby wyodrębnić dowolny składnik Adres:

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

aby wyodrębnić kod pocztowy Państwo zadzwonić:

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

Ale można również uzyskać inne ciekawe informacje jak:

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

itp ...

+0

dziękuję, zastanawiałem się, jak to zrobić przez chwilę – Francesco

Powiązane problemy