Implementando Latitude e Longitude em sua Aplicação


    Atualmente nossas aplica√ß√Ķes est√£o demandando regras de neg√≥cios cada vez mais inovadoras e desafiantes com objetivo de conhecer nosso cliente agregando valor ao neg√≥cio.
    Com intuito de compartilhar entre as organiza√ß√Ķes e a todos que desejarem fazer a integra√ß√£o em seus aplicativos, estou disponibilizando nesse artigo passos para que sua aplica√ß√£o esteja ela disponibilizada na web e ou na intranet  seja interligada com o Google registrando a latitude e longitude de seus clientes.
           Esta aplica√ß√£o faz a leitura de um arquivo texto ,  com dados de cadastro do cliente e registra um arquivo texto com a latitude e longitude  destes clientes que foram encontrados no google.
          Lembrando que no nosso caso estamos gravando as informa√ß√Ķes em um arquivo texto , mas nada impede que sejam atualizadas essas informa√ß√Ķes na base dados .

        1 ‚Äď Passo :

        Abrimos um projeto web no Visual Studio 2005 e escolhemos com linguagem o vb.net.
        
        Clique na imagem para ampliar


     2 ‚Äď Passo :

    2.1  - Adicionamos em nosso aplicativo um projeto de Dataset com os seguintes Atributos :
             Cnpjcpf , Logradouro , Bairro, Cidade , Cep .
      2.2‚Äď Adicionamos os seguintes componente ao nosso layout :
             Button  > Renomeie para Gera Informa√ß√Ķes
             FileUpload
             Label

    3 ‚Äď Passo :

           Implementamos o m√©todo que efetua a leitura do arquivo e grava as informa√ß√Ķes no Dataset.
    Vejamos o c√≥digo :
    
 Private Sub LerArquivoCRM()

        Dim fluxoTexto As IO.StreamReader
        Dim linhaTexto As String

        Dim arquivo As String = FileUpload1.PostedFile.FileName
        FileUpload1.SaveAs(arquivo)

        Dim cnpjcpf As String
        Dim logradouro As String
        Dim bairro As String
        Dim cidade As String
        Dim cep As String

        Dim row As DataSetLeituraArquivo.Tbl_AtualizaClienteCRMGUIDRow
        Dim DsLeituraArquivo As New DataSetLeituraArquivo

        If IO.File.Exists(arquivo) Then

            fluxoTexto = New IO.StreamReader(arquivo)

            linhaTexto = fluxoTexto.ReadLine

            While linhaTexto <> Nothing

                cnpjcpf = CType(linhaTexto.Split(";"c).GetValue(0), String)
                logradouro = CType(linhaTexto.Split(";"c).GetValue(1), String)
                bairro = CType(linhaTexto.Split(";"c).GetValue(2), String)
                cidade = CType(linhaTexto.Split(";"c).GetValue(3), String)
                cep = CType(linhaTexto.Split(";"c).GetValue(4), String)

                linhaTexto = fluxoTexto.ReadLine

                row = DsLeituraArquivo.Tbl_AtualizaClienteCRMGUID.NewTbl_AtualizaClienteCRMGUIDRow()
                row.cnpjcpf = cnpjcpf
                row.ds_logradouro = logradouro
                row.ds_bairro = bairro
                row.ds_cidade = cidade
                row.ds_cep = cep
                DsLeituraArquivo.Tbl_AtualizaClienteCRMGUID.Rows.Add(row)

            End While

            fluxoTexto.Close()
            BuscaLatitudeLongitude(DsLeituraArquivo)

        End If

    End Sub


       4 ‚Äď Passo :

      Declaramos uma vari√°vel que aponta para o caminho e o nome do arquivo que ser√° gravado com as informa√ß√Ķes             de latitude e longitude.
     Lembrando que em nosso artigo aponta para diret√≥rio especifico , mas nada impende que seja implementado por par√Ęmetros que pode ser especificado efetuando a leitura do web.config da aplica√ß√£o.

        
Private arquivoINSERE As String = "C:\ClientesLatitude.txt"


       5 ‚Äď Passo :

       Implementamos agora o metodo que vai buscar os dados do dataset e chamar a API do google para registrar as informa√ß√Ķes de latitude e longitude gravando no arquivo texto a saida.
       Lembrete : Para a utiliza√ß√£o da API do google deve ser feito o registro , para obter a chave de registro que ser√° passada na url como parametro.
 Private Sub BuscaLatitudeLongitude(ByVal ds As DataSetLeituraArquivo)

        strm = New StreamWriter(arquivoINSERE, True)
        For Each dr As DataSetLeituraArquivo.Tbl_AtualizaClienteGUIDRow In ds.Tbl_AtualizaClienteGUID.Rows
            Dim Endereco As String = dr.ds_logradouro
            Dim CEP As String = dr.ds_cep
            Dim Rua As String = dr.ds_logradouro
            Dim BairroLt As String = dr.ds_bairro
            Dim CidadeLt As String = dr.ds_cidade
            Dim url As String = "http://maps.google.com/maps/geo?q=" & HttpUtility.UrlEncode(Endereco & CEP) & "&output=csv&key=ChaveRegistrono Google"
            Dim req As WebRequest = HttpWebRequest.Create(url)
            req.Timeout = 30000
            Dim res As WebResponse = req.GetResponse()
            Dim sr As New StreamReader(res.GetResponseStream())
            Try
                Dim strRetorno As String = sr.ReadToEnd()
                If strRetorno Is Nothing OrElse strRetorno.Equals(String.Empty) Then
                    Throw New Exception("Not found!")
                End If
                Dim Latitude As String = strRetorno.Split(",")(2)
                Dim Longitude As String = strRetorno.Split(",")(3)
                strmErro.WriteLine("CNPJ/CPF: " & dr.cnpjcpf & "   Latitude: " & Latitude.ToString & "   Longitude: " & Longitude.ToString)
            Finally
                sr.Close()
            End Try
        Next

        strmErro.Close()
        Label1.Text = " Informa√ß√Ķes Atualizadas "
    End Sub


6 ‚Äď Passo :

       Implementamos a chamada dos metodos pelo cliente do bot√£o Gera Informa√ß√Ķes e fazemos a valida√ß√£o para saber se antes efetuar a gera√ß√£o de informa√ß√Ķes o arquivo foi selecionado.

   If FileUpload1.HasFile Then
            LerArquivoCRM()
        Else
            Label1.Text = " Selecione um arquivo de extens√£o .TXT"
        End If


7 ‚Äď Passo :
    
     Finalmente chegamos ao final de nossa aplica√ß√£o e temos um layout que pode ser visualizado abaixo e uma intelig√™ncia integrada com Google  com um  grande poder de integra√ß√£o de valor ao neg√≥cio.



Clique na imagem para ampliar