Tag Archives: google

WCF – Services GoogleMaps API Consultar CEP

Chega de teoria! #1 : O primeiro serviço com WCF

Continuando a saga para nos familiarizar com o WCF. A missão de hoje é aprender como desenvolver passo-a-passo um serviço WCF. Vamos lá:

Uma funcionalidade comum em apps é “Consultar CEP”. Ou seja, o cliente se cadastra no site, e no preenchimento do CEP, os demais campos são preenchidos automaticamente.

Como este projeto é simples, um wrapper .NET(codeplex) para a API do Google Maps que realiza este tipo de tarefa (entre outras). Para isto utilizaremos a parte do Geocoding do Google Maps através deste componente.

O Projeto

A primeira etapa. Defina os detalhes da criação do projeto:

  • Nome : DemoCepGMaps WCF
  • Template Project : Console Application
  • NET : Componente para a API do Google Maps (referência)
  • Assembly : System.ServiceModel

O método ObterEndereco

Este método irá obter o endereço através do CEP.

 
private static string ObterEndereco(string cep)
        {
            var target = new Geocoding();

            var addressLocation = target.GetByAddress(cep).Results[0].Geometry.Location;

            var addressInformation = target.GetByCardinalDirection(String.Format("{0},{1}",
                addressLocation.Latitude.ToString(new CultureInfo("en-US")),
                addressLocation.Longitude.ToString(new CultureInfo("en-US"))));

            var address = addressInformation.Results[0].FormattedAddress;

            return address;
        }

O método ObterCep

Veja também como é simples pegar CEP pelo endereço.

private static string ObterCep(string endereco)
        {
            var target = new Geocoding();

            var addressLocation = target.GetByAddress(endereco).Results[0].Geometry.Location;

            var addressInformation = target.GetByCardinalDirection(String.Format("{0},{1}",
                addressLocation.Latitude.ToString(new CultureInfo("en-US")),
                addressLocation.Longitude.ToString(new CultureInfo("en-US"))));

            return addressInformation.Results[0].AddressComponents.Where(s => 
            s.GeoTypes.Contains("postal_code")).FirstOrDefault().LongName;
        }

Etapa 3: Main.cs

Finalmente, agora vamos chamar estes métodos. No método Main, implemente.

string endereco = ObterEndereco("04055-110");
string cep = ObterCep("Av Capitão Casa – São Bernardo do Campo – SP – Brazil");

Console.WriteLine("Meu endereço {0}", endereco);
Console.WriteLine("Meu cep {0}", cep);

O retorno será:

  • Meu endereço: R. das Uvaias, 2-178 – Saúde, Sao Paulo – São Paulo, 04055-110, Brazil
  • Meu CEP: 09811-250

Endereço Quebrado
Veja também como é simples preencher os campos isolados da aplicação.

static string endereco = string.Empty,
bairro = string.Empty,
numero = string.Empty,
cidade = string.Empty,
estado = string.Empty,
pais = string.Empty;

Aqui estou criando os membros privados que iremos exibir.

Agora crie a função que faça a quebra utilizando o wrapper do CodePlex:

private static void ObterEnderecoQuebrado(string cep)
        {
            var target = new Geocoding();
            var addressLocation = target.GetByAddress(cep).Results[0].Geometry.Location;
            var addrressInformation = target.GetByCardinalDirection(String.Format("{0},{1}",
                addressLocation.Latitude.ToString(new CultureInfo("en-US")),
                addressLocation.Longitude.ToString(new CultureInfo("en-US"))));

            var addressComponents = addrressInformation.Results[0].AddressComponents;

            numero = GetComponentValue(addressComponents, "street_number");
            endereco = GetComponentValue(addressComponents, "route");
            pais = GetComponentValue(addressComponents, "country");
            bairro = GetComponentValue(addressComponents, "sublocality");
            cidade = GetComponentValue(addressComponents, "locality");
            estado = GetComponentValue(addressComponents, "administrative_area_level_1");
        }

No Main:

ObterEnderecoQuebrado("09571-300");
Console.WriteLine("Meu endereco", endereco);
Console.WriteLine("Intervalo de numeros", numero);
Console.WriteLine("Meu bairro", bairro);
Console.WriteLine("Minha cidade", cidade);
Console.WriteLine("Meu estado", estado);
Console.WriteLine("Meu pais", pais);

Pronto! agora o retorno:
Meu endereço: R. Sílvia
Intervalo de números: 1452-1536
Meu bairro: Oswaldo Cruz
Minha cidade: São Caetano do Sul
Meu estado: São Paulo
Meu país: Brazil

O objetivo deste post era mostrar uma introdução ao mundo WCF criando um serviço bem simples. Os próximos passos vamos nos preocupar com mais abordagens práticas.

Observações

Veja alguns pontos importantes:

Para aplicação web, utilize este web.config:

Pronto! Agora temos uma app serviço de cep pronto. Agora é testar o Serviço com o WCF TestClient.

Ok! Sobre Services WCF é tudo o que eu tenho a dizer.

O jogo continua.

Missão cumprida!