VB 2005 - Usando o Google Maps na sua aplicação


Você já pensou ou precisou usar algum recurso do Google em sua aplicação Visual Basic ? Em meu artigo VB.NET  2005  - Usando a API do Google - Web Services mostrei como usar o web service do Google em sua aplicação VB e neste artigo eu mostro para você como você pode usar o recurso Google Maps no VB 2005 Express Edition.

Você não vai precisar referenciar nenhuma API , não vai precisar fazer nenhum registro ou ter licença alguma para usar o Google Maps. Basta ter uma conexão com a internet e pronto, o recurso já pode ser usado.

Inicie o VB 2005 Express (é recomendável que você atualize a versão com o Service Pack 1) e crie um novo projeto do tipo Windows Application com o nome de mapsGoogleNet ou qualquer nome que achar mais conveniente.

Abra o formulário e defina o seguinte namespace na declaração imports:    Imports System.text

No início do formulário defina a variável consultaEndereco do tipo StringBuilder:

Dim consultaEndereco As New StringBuilder()

A seguir no formulário padrão - form1.vb - inclua um componente SplitContainer nomeando-o como mapsGoogleNet com orientação Horizontal conforme figura abaixo:

 

O container usado conterá dois painéis , onde no painel superior iremos incluir alguns controles TextBox e Button para coletar informação do usuário e no painel inferior vamos incluir um componente WebBrowser a partir da guia Common Control da ToolBox.

Abaixo temos a figura mostrando o leiaute do formulário exibindo os controles que serão usados no projeto:

 

A seguir insira o seguinte código no evento Click do botão Localizar Endereço:

 

Private Sub btnMapsEndereco_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMapsEndereco.Click

Dim cidade As String = String.Empty

Dim estado As String = String.Empty

Dim rua As String = String.Empty

Dim cep As String = String.Empty

consultaEndereco.Append("http://maps.google.com/maps?q=")

Try

' constroi a consulta pelo nome da cidade

If txtCidade.Text <> String.Empty Then

   cidade = txtCidade.Text.Replace(" ", "+")

   consultaEndereco.Append(cidade + "," & "+")

End If

' constroi a consulta pelo nome do estado

If txtEstado.Text <> String.Empty Then

   estado = txtEstado.Text.Replace(" ", "+")

  consultaEndereco.Append(estado + "," & "+")

End If

' constroi a consulta pelo nome da rua

If txtRua.Text <> String.Empty Then

   rua = txtRua.Text.Replace(" ", "+")

  consultaEndereco.Append(rua + "," & "+")

End If

' constroi a consulta pelo cep informado

If txtCep.Text <> String.Empty Then

  cep = txtCep.Text.ToString()

  consultaEndereco.Append(cep)

End If

' passa a URL com a string de consulta para o WebBrowser

WebBrowser1.Navigate(consultaEndereco.ToString())

Catch ex As Exception

           MessageBox.Show(ex.Message.ToString(), "Localização indisponível para exibição no Mapa.")

End Try

 

A lógica usada é muito simples:

iremos usar a URL do Google maps no controle WebBrowser e a partir das informações passadas pelo usuário iremos montar uma consulta de busca por endereço ou por latitude/longitude passando os parâmetros para a URL.

Nota: para saber mais sobre o controle WebBrowser leia o artigo: VB.NET  2005 - Criando o seu próprio Navegador Web.

A URL do Google Maps usada é :  http://maps.google.com/maps?q=

Usando o componente StringBuilder iremos agregar os parâmetros a URL através do comando Append.

Nota: Para saber mais sobre o componente StringBuilder leia o artigo: VB .NET - StringBuilder : tratando Strings de modo mais eficiente.

Assim, se o usuário informar na caixa de texto cidade o nome Brasilia, iremos efetuar a seguinte instrução:

consultaEndereco.Append(cidade + "," & "+")     onde consultaEndereco refere-se a URL http://maps.google.com/maps?q=

O resultado da URL que será passada para o WebBrowser usando o método Navigate (WebBrowser1.Navigate(consultaEndereco.ToString())) é o seguinte:

"http://maps.google.com/maps?q=Brasilia,+"

O controle WebBrowser tem a responsabilidade de passar as informações via URL e obter o resultado exibindo o mapa no painel inferior. Abaixo temos o resultado do processamento para exibição do mapa para a cidade de Brasília .  A URL montada e usada pelo WebBrowser neste caso é: http://maps.google.com/?q=Brasilia

Observe que na busca por endereço você não é obrigado suprir todas as informações, pode informar somente a cidade para exibir o seu mapa. As informações de Estado, Rua e Cep geralmente são usadas para os Estados Unidos e a Europa.

Para a longitude/latitude a lógica é a mesma e a consulta é montada com os valores informados pelo usuário. Abaixo um exemplo usando valores para latitude e longitude.  A URL montada e usada pelo WebBrowser neste caso é : http://maps.google.com/?q=56.01717,12.18909

O código do evento Click do botão Localizar Latitude/Longitude é dado a seguir:

Private Sub btnMapsLatituteLongitude_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMapsLatituteLongitude.Click

 

Dim latitude As String = String.Empty

Dim longitude As String = String.Empty


If
txtLatitude.Text = String.Empty Or txtLongitude.Text = String.Empty
Then

    MessageBox.Show("Forneça um valor para latitude e longitude.", "Google Maps")

End If

 

consultaEndereco.Append("http://maps.google.com/maps?q=")

 

Try

' monta a consulta com o valor da latitude

If txtLatitude.Text <> String.Empty Then

latitude = txtLatitude.Text

consultaEndereco.Append(latitude + "%2C")

End If

' monta a consulta com o valor da longitude

If txtLongitude.Text <> String.Empty Then

longitude = txtLongitude.Text

consultaEndereco.Append(longitude)

End If

WebBrowser1.Navigate(consultaEndereco.ToString())

Catch ex As Exception

          MessageBox.Show(ex.Message.ToString(), "Googe Maps - Erro")

End Try

End Sub

Neste exemplo você percebeu que quem fez todo o serviço foi o Google Maps você apenas passou as informações necessárias.

Google Maps e JavaScript

Você pode usar o recurso Google Maps na web usando JavaScript mas vai precisar de uma chave. Abaixo um trecho de código que mostra o mapa para uma região usando uma chave já definida. Para testar copie e cole o código abaixo em um arquivo com extensão htm e execute.(Para uso próprio obtenha a sua própria chave)

Para obter a chave e usar o google maps em seu sítio clique aqui : http://www.google.com/apis/maps/signup.html

<script 
src="http://maps.google.com/maps?file=api&v=1&key=ABQI...twwQ"
type="text/javascript"></script>
<div id="map" style="width: 500px; height: 400px"></div>
<script type="text/javascript">
//<![CDATA[
    
var map = new GMap(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.centerAndZoom(new GPoint(-122.1419, 37.4419), 4);
    
//]]>
</script>

Pegue o projeto completo aqui :  mapsGoogleNet.zip

Eu sei, é apenas Visual Basic, mas eu gosto ...

referências:  http://www.vbdotnetheaven.com/UploadFile/scottlysle/VBQuickMap03182007085423AM/VBQuickMap.aspx


José Carlos Macoratti