Como usar Google Maps no Clarion
Publicado em: 04-03-2010 | Por: Adriano Santos | Em: Clarion
Tags:api, Clarion, google, maps
1
O fabuloso Google, com suas facetas e interatividade Web 2.0: “O que seríamos, nós simples mortais, sem o Google?”, pergunto.
Dentre vários serviços oferecidos pelo Google, um o qual considero bastante facinante é o Maps.
No início, acredito eu, nossas principais tarefas, foram: ver nossa casa, nossa faculdade, nosso local de trabalho, nossa cidade, nossos amigos, sem falar nas viagens impressionantes por pontos famosos do mundo, sem se quer sair da cadeira. Após este primeiro processo, nossas mentes se abre, e conseguimos enxergar mais longe, e ir além do que esta ferramenta realmente nos oferece.
Pensando nisso, criei um serviço para meus clientes, onde usuários do meu sistema ERP HM Gerencial, conseguem facilmente consultar os endereços de seus colaboradores diretamente no Mapa, com apenas um único clique. Fazer entregas, cobranças, visitas, tudo fica mais fácil, quando se tem a um único clique o endereço exato de seus colaboradores.
Este Post, não visa debater a API Google Maps, pelo contrário, o título deveria ser “Como usar o Google Maps, para quem não entende nada da API Google Maps”. Aqui pretendo mostrar uma forma bastante adequada e simples para acessar os serviços do Google Maps, diretamente na sua url.
Tudo será feito no Clarion, mas desenvolvedores de outras linguagens com certeza poderão usar as informações para adaptá-los as suas IDEs. Vamos lá:
A primeira questão neste projeto, é: “Como acessar a internet e os serviços do Google, sem um browser nativo?”, a resposta foi: “Usar a API do windows para acessar o Browser padrão instalado, e por ele fazer os requests necessários”.
Para isso, usei a ShellExecute: funcionalidade da API do Windows, para executar aplicativos externos.
Na nossa ide Clarion, crie um novo projeto: File -> New -> Project. Defina os parâmetros e confirme. Em nossa CLW digite o seguinte código:
!Inicio de nosso aplicativo PROGRAM MAP !Função responsável pelo tratamento da URL e envio ao Browser ChamaBrowser(unsigned, STRING) !Chamando Funcao da API MODULE('') ShellExecute(UNSIGNED,LONG,*CSTRING,LONG,*CSTRING,SIGNED),UNSIGNED,PASCAL,RAW,NAME('SHELLEXECUTEA') END END !Declarando Variáveis wEndereco CSTRING(200) wBairro CSTRING(200) wCidade CSTRING(200) wEstado CSTRING(2) wDestino CSTRING(200) wOrigem CSTRING(200) !Criando interface com Usuário Window WINDOW('Usando servicos Google Maps - by Adriano Santos'),AT(,,219,157),CENTER,SYSTEM STRING('Consultar Endereço no Mapa:'),AT(5,4),USE(?String1) STRING('Endereço:'),AT(6,17),USE(?String3) ENTRY(@s199),AT(40,17,168,10),USE(wEndereco) STRING('Bairro:'),AT(17,28),USE(?String4) ENTRY(@s199),AT(40,28,168,10),USE(wBairro) STRING('Cidade:'),AT(14,39),USE(?String5) ENTRY(@s199),AT(40,39,120,10),USE(wCidade) STRING('Estado:'),AT(164,39),USE(?String6) ENTRY(@s2),AT(190,39,18,10),USE(wEstado) BUTTON('Consultar Endereço'),AT(156,51,52,16),USE(?BtnConsultarEndereco),LEFT LINE,AT(5,70,208,0),USE(?Line1),COLOR(COLOR:Black) STRING('Traçar Rota:'),AT(8,75),USE(?String2) STRING('Origem:'),AT(13,86),USE(?String7) ENTRY(@s199),AT(40,86,168,10),USE(wOrigem) ENTRY(@s199),AT(40,98,168,10),USE(wDestino) STRING('Destino:'),AT(12,99),USE(?String8) BUTTON('Traçar Rota'),AT(156,109,52,16),USE(?BtnTracarRota) LINE,AT(5,133,205,0),USE(?Line2),COLOR(COLOR:Black) BUTTON('Sair'),AT(176,137,32,16),USE(?BtnSair) END CODE OPEN(Window) ACCEPT CASE ACCEPTED() OF ?BtnConsultarEndereco !Consultando endereço no Mapa ChamaBrowser(Window{prop:handle}, | 'http://maps.google.com/?q=' &| CLIP(wCidade) &','&| CLIP(wEstado) &','&| CLIP(wEndereco) ) DISPLAY OF ?BtnTracarRota !Consultando rota entre destinos ChamaBrowser(Window{prop:handle}, | 'http://maps.google.com/?q=from:' &| CLIP(wOrigem) &' to: '&| CLIP(wDestino) ) DISPLAY OF ?BtnSair !Finalizar Aplicativo BREAK END END CLOSE(Window) RETURN ChamaBrowser PROCEDURE (wHandle, URL) URLBuffer CSTRING(256) EmptyString CSTRING(254) CODE URLBuffer = CLIP(URL) EmptyString='' x# = ShellExecute(whandle, 0, URLBuffer, 0, EmptyString, 1)
Não vou entrar em detalhes básicos deste código, como criação de variáveis, tratamento da window com ACCEPT, entre outras coisas, vamos direto ao código dos botões “Consultar Endereço” e “Traçar Rota”. No primeiro botão, em seu evento ACCEPTED(), chamamos a função “ChamaBrowser”, o qual recebe duas variáveis, sendo a primeira, a handle, ou endereço de memória da window e a segunda a URL. Quando esta função é executada, então é feito tratamento da URL, e enviada ao ShellExecute.
Detalhe na URL… Vasculhando o código da página Google, descobri um “input hidden” chamando “q”, e então resolvi passar a URL para ele, e ver o resultado do GET.
Foi impressionante, este input popula o form do Google Maps, fazendo a pesquisa conforme o endereço indicado. Depois foi somente estudar mais um pouco e descobrir as tags “from:” e “to:” para conseguir traças rotas no mapa. Veja:
Resultado:
Para fazer o downlod dos arquivos deste projeto, clique aqui.









(3 votes, average: 4,67 out of 5)
aki vai um comentário.