Obtener el código postal de una dirección mediante la API de Google Maps

Muchas veces necesitamos obtener el código postal de una dirección en algunos proyectos. Mediante la API de Google Maps es fácil extraer el código postal de una dirección. Para ello, los chicos de Codexworld han creado una función que permite obtener el código postal de una dirección.

La función getZipcode() acepta un solo parámetro ($address). El valor de la variable address debe ser la dirección completa de la que quieras extraer el código postal.

La función getZipcode()

/**
*
* Author: CodexWorld
* Author URI: http://www.codexworld.com
* Function Name: getZipcode()
* $address => Full address.
*
**/
function getZipcode($address){
    if(!empty($address)){
        //Formatted address
        $formattedAddr = str_replace(' ','+',$address);
        //Send request and receive json data by address
        $geocodeFromAddr = file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address='.$formattedAddr.'&sensor=true_or_false'); 
        $output1 = json_decode($geocodeFromAddr);
        //Get latitude and longitute from json data
        $latitude  = $output1->results[0]->geometry->location->lat; 
        $longitude = $output1->results[0]->geometry->location->lng;
        //Send request and receive json data by latitude longitute
        $geocodeFromLatlon = file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?latlng='.$latitude.','.$longitude.'&sensor=true_or_false');
        $output2 = json_decode($geocodeFromLatlon);
        if(!empty($output2)){
            $addressComponents = $output2->results[0]->address_components;
            foreach($addressComponents as $addrComp){
                if($addrComp->types[0] == 'postal_code'){
                    //Return the zipcode
                    return $addrComp->long_name;
                }
            }
            return false;
        }else{
            return false;
        }
    }else{
        return false;   
    }
}

Cómo utilizarla

Para utilizar la función getZipcode, lo haremos de este modo:

$address = 'Calle Desengaño 21, Madrid, España';
$zipcode = getZipcode($address);
$zipcode = $zipcode?$zipcode:'Not found';

Necesitamos especificar la key de la API de Google en la llamada, como un parámetro

$geocodeFromAddr = file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address='.$formattedAddr.'&sensor=true_or_false&key=GoogleAPIKey');

Fuente: codexworld.com

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP