Aplicação Delphi utilizando Google Maps -  Google Maps Library
Autor: Landerson Gomes | Publicado: 2013-03-30T23:01:00-03:00

Neste artigo desenvolveremos uma aplicação em Delphi acessando o GoogleMaps através dos componentes da GMLib. Necessidade de Localizar  Ao longo desses anos trabalhando no setor de&nbsp; tecnologia e desenvolvimento de empresas do ramo de logística e distribuição de produtos farmacêuticos, sempre encontro a necessidade de implantar nas empresas pequenas soluções, capazes de automatizar e/ou otimizar processos, e geralmente essa necessidade exige velocidade na concepção das soluções, para isso não existe nada é mais rápido que o Delphi.  Com a popularização do Google Maps, o acesso a dados GPS, a geolocalização entra de vez no cotidiano das pessoas e com isso, de quebra acaba chegando também às empresas dos mais diversos tamanhos e ramos da economia. Imagine uma empresa que deseja visualizar a localização de seus clientes no mapa, plotar pontos onde vendeu determinados produtos. Pois bem, nessa postagem estaremos fazendo exatamente isso.  Para isso utilizaremos o Delphi e a suite de componentes livre Google Maps Library que baixaremos através do link. Trata-se de um projeto ainda em versão beta mas muito satisfatório uma vez que nos proporciona agilidade no que se propõe.  Instalando o GMLib&nbsp;  Feito o download, extraia os arquivos em um diretório a sua escolha. Abra seu Delphi, no meu caso estarei instalando no Delphi XE3, vá até o diretório onde extraiu os arquivos do GMLIB, lá localize e abra o arquivo GMLibProject_DXE3.groupproj.  Note que o projeto foi carregado no project manager, selecione através de um duplo clique o pacote GMLib_DXE3.bpl, selecione a plataforma 32-bit Windows em Target Platform, clique com o botão direito sobre o arquivo GMLib_DXE3.bpl e selecione a opção Compile em seguida a opção Install. Repita esse procedimento para a plataforma 64-bit Windows e faça o mesmo para os demais pacotes (.bpl): GMLib_DXE3_VCL.bpl, GMLib_DXE3_FMX.bpl e GMLibEdit_DXE3.bpl.Agora que foram compilados e instalados os componentes, precisamos apontar os diretorios em Library Path.   Vá em Tools --&gt; Options --&gt; Environment Options --&gt; Delphi Options --&gt; Library. No lado direito da tela selecione a 32-bit Windows para a plataforma, em Library Path clique no botão reticências [...] navegue até a pasta onde você extraiu os arquivos do GMLib, localize a pasta lib\DXE3 e pressione OK em seguida Add. Faça o mesmo com as pastas lib\DXE3\VCL e lib\DXE3\FMX, vá agora até a pasta src e depois com as pastas src\VCL e src\FMX. Repita o procedimento para a plataforma 64-bit Windows e já podemos finalizar a instalação através do menu File –&gt; Close All.   Conhecendo os componentes Brevemente vamos fazer a apresentação dos compenentes que serão usados no nosso exemplo.   TGMMap é responsável por acionar o mapa propriamente dito, enfim é ele o responsável por projetar nosso mapa num TWebBrowser.  TGMMarker é o componente responsável por inserir marcadores no mapa relacionado.  TGMGeoCode é o componente que utilizaremos para receber o posicionamento (geolocalização). Basicamente temos tudo o que iremos precisar para termos nosso mapa. Caso você queira se aprofundar mais na suite de componetes acesse o Blog de Cadetill e consulte a documentação de todos os componentes da suite.  begin: Criando a interface Com o Delphi aberto, vamos iniciar um novo projeto. Acesse&nbsp; File--&gt; New --&gt; VCL Forms Application, vamos salvar nosso projeto, dê um Save All, no meu caso chamarei o projeto de ArtigoMapa, nosso formulário se chamará frmPrincipal e sua Unit será frmPrincipalUnt. Adicione os componentes no nosso formulário, vamos precisar destes: um panel (com alinhamento alBotton), um WebBrowser (alinhamento AllClient), um ClientDataSet, um DataSource. Dentro do Panel, adicione um DBGrid e um DBNavigator. No ClientDataSet, clique com botão direito sobre ele e selecione a opção Fields Editor para que possamos criar a estrutura da nossa tabela.Teremos basicamente 2 campos: Referência e Endereço. Com o Editor de Campos aberto clique sobre ele com o botão direito e acione a opção New Field para criarmos nosso primeiro campo. Altere a propriedade Name para Referencia, Type para String e Size para 30, em seguida clique em OK.   Repita o procedimento para criar o campo Endereco, este porém atribua 120 na propriedade Size. Com os dois campos já criados, feche o Editor de Campos e&nbsp; vamos clicar com o botão direito sobre o ClientDataSet e vamos acionar a opção Create DataSet para criarmos o arquivo de dados. Vamos alterar a propriedade FileName do ClientDataSet, clicando sobre seu botão reticências […], para Referencia.xml.Vamos agora ligar os componentes de acesso a dados... altere a propriedade DataSource do DBGrid e do DBNavigator apontando para o DataSource que inserimos (DataSource1). No nosso DataSource altere a propriedade AutoEdit para False e a propriedade DataSet apontando para o ClientDataSet (ClientDataSet1), com isso termos a parte de dados da aplicação pronta para rodar necessitando apenas de pequenos ajustes para a gravação de dados que veremos a seguir. Até aqui tudo tranquilo, nenhuma novidade né? Vamos então a parte específica de nosso artigo, adicionaremos agora os componentes da Paleta GoogleMaps, insira no projeto um GMMap, um GMGeoCode, um GMMarker. Configuraremos esses componentes da seguinte forma: vamos alterar a propriedade Language de todos eles para PortuguesBR, no GMMap vamos alterar a propriedade IntervalEvents para 0 e a propriedade WebBrowser vamos apontar para o que temos no projeto (WebBrowser1), no GMMarker vamos alterar a propriedade Map apontando-a para nosso GMMap (GMMap1) e no GMGeoCode vamos alterar a propriedade Marker para que aponte para nosso GMMarker (GMMarker1).  Adicionando as funcionalidades Para tudo fazer seentido vamos adicionar as funcionalidades básicas de nossa aplicação. No evento onActivate do frmPrincipal teremos:  procedure TfrmPrincipal.FormActivate(Sender: TObject);begin&nbsp; ClientDataSet1.Open;end; isso fará com que a aplicação abra o ClientDataSet possibilitando-nos inserir as referências e endereços a serem mapeados. Vamos executar a aplicação e confirmar o funcionamento... clique sobre o botão Adicionar ("+") para adicionar registros em nossa aplicação, insira os registros e clique sobre o botão Postar ("V") para gravar os registros. Os meus registros foram:    Engenhão | Estádio Olímpico João Havelange - Rua das Oficinas, Rio de Janeiro.  Maracanã | Estádio Mário Filho - Maracanã - Rua Professor Eurico Rabelo, Rio de Janeiro.  Fluminense F.C. | R. Álvaro Chaves, 41 Agora já temos dados para que o mapa exiba lugares conhecidos. Feche a aplicação e vamos agora inserir o código para efetuarmos a plotagem dos endereços no mapa efeticvamente. Plotando os endereços no mapa Para que o mapa seja processado pela aplicação devemos no evento AfterPageLoaded do GMMap vamos inserir a seguinte linha:  procedure TfrmPrincipal.GMMap1AfterPageLoaded(Sender: TObject; First: Boolean);begin&nbsp; GMMap1.DoMap;end; Vamos agora atribuir ao evento onDblClick de nosso DBGrid a funcionalidade de exibir um marcador com o registro selecionado no mapa, para tal insira o código: procedure TfrmPrincipal.DBGrid1DblClick(Sender: TObject);begin&nbsp; GMMap1.Active := True;&nbsp; if DataSource1.DataSet.RecordCount &gt; 0 then&nbsp;&nbsp;&nbsp; begin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GMGeoCode1.Geocode(ClientDataSet1Endereco.AsString);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GMMarker1.Items[DataSource1.DataSet.Recno].CenterMapToMarker;&nbsp;&nbsp;&nbsp; end;end; Basta agora executar e temos a aplicação cumprindo o seu propósito inicial, de maneira bem simples. Você pode se aprofundar mais nos componentes e deixar sua imaginação cuidar do resto, vale ressaltar que o componente traz um aplicativo demo muito interessante que vale a pena dar uma olhada. end;