Introdução
No último post, acrescentamos um botão de pesquisa de CEP. Agora, que tal mostrarmos o endereço do contato em foco no Google Maps? Vai ser mais rápido e fácil do que você imagina!
Acrescentando mais um botão
No menu de ações do lado direito da tela, vamos acrescentar um botão chamado “Mapa”:
@ 95,05 BUTTON oBtnMap PROMPT "Mapa" SIZE 60,15 ; ACTION ShowMap(oDlg,aBtns,aGets) OF oPanelNav PIXEL aadd(aBtns,oBtnMap) // [13] Mapa
Agora, vamos criar a função que vai fazer a mágica. É mais simples do que parece.
STATIC Function ShowMap(oDlg,aBtns,aGets) Local nPos Local cEndereco Local cCidade Local cUF Local cCEP Local cMapsURL := 'https://www.google.com/maps/search/?api=1&query=' Local cUrlQry := '' // Busca nos GETS os campos para montar uma Query de busca // de endereço para o Google Maps nPos := ascan(aGets , {|x| x[1] == "ENDER" } ) cEndereco := alltrim(Eval( aGets[nPos][2]:bSetGet )) If !empty(cEndereco) cUrlQry += UrlEscape(cEndereco+',') Endif nPos := ascan(aGets , {|x| x[1] == "CIDADE" } ) cCidade := alltrim(Eval( aGets[nPos][2]:bSetGet )) If !empty(cCidade) cUrlQry += UrlEscape(cCidade+',') Endif nPos := ascan(aGets , {|x| x[1] == "UF" } ) cUF := Eval( aGets[nPos][2]:bSetGet ) If !empty(cUF) cUrlQry += UrlEscape(cUF+',') Endif nPos := ascan(aGets , {|x| x[1] == "CEP" } ) cCep := alltrim(Eval( aGets[nPos][2]:bSetGet )) If !empty(cCidade) cUrlQry += UrlEscape(cCEP) Endif If Empty(cUrlQry) MsgStop("Nao há dados preenchidos suficientes para a busca.") Return Endif // Ao sumbeter uma URL, o sistema operacional abre o navegador // padrão com o endereço fornecido shellExecute("Open", cMapsURL+cUrlQry, "", "", 1 ) Return
Simples assim, ao estar posicionado em um contato da agenda, você clica no botão “Mapa”, e caso pelo menos alguma informação do endereço esteja preenchida, ela será usada para montar uma URL abrindo o Google Maps, para fazer a busca do endereço fornecido. E, como os dados do formulário podem conter caracteres especiais que devem entrar como informações dentro da URL, usamos a função URLEscape(), também acrescentada no código, vide fonte abaixo:
STATIC Function UrlEscape(cInfo) cInfo := strtran(cInfo,'%',"%25") cInfo := strtran(cInfo,'&',"%26") cInfo := strtran(cInfo," ","+") cInfo := strtran(cInfo,'"',"%22") cInfo := strtran(cInfo,'#',"%23") cInfo := strtran(cInfo,",","%2C") cInfo := strtran(cInfo,'<',"%3C") cInfo := strtran(cInfo,'>',"%3E") cInfo := strtran(cInfo,"|","%7C") Return cInfo
Existem mais caracteres que poderiam ser tratados, mas para uma versão inicial, um tratamento básico é suficiente.
Conclusão
Não é legal apertar um botão em uma agenda e abrir um mapa mostrando onde fica o endereço ? Antes da Internet, você teria que fazer — ou comprar feito — algum software especifico — e provavelmente caro — para fazer algo assim. Hoje, a sua aplicação não precisa fazer tudo por ela mesma, usar APIs prontas e outros recursos — a maioria deles gratuito (desde que não utilizados para fins comerciais) — torna uma aplicação mais completa, amigável, agrega valor, atrai usuários, enfim…. 🙂
Novamente desejo a todos TERABYTES DE SUCESSO !!
Referências
Júlião, muito loko essa série CRUD. Parabéns!
CurtirCurtido por 1 pessoa
Tks 😉
CurtirCurtir