Neste artigo vou recordar como usar o Google Maps em aplicações VB .NET interagindo como controle WebBrowser. |
No exemplo do artigo vamos exibir um mapa a partir de um endereço informado e também a partir da longitude e latitude informada.
Para exibir o mapa não vamos precisar usar qualquer licença do Google, nem invocar alguma API para obter o resultado.
Vamos
apenas usar a url de consulta do Google
: "http://maps.google.com/maps?q="
e exibir o resultado no controle
WebBrowser.
Fazendo isso
ao executar o projeto iremos obter uma mensagem indicando que o Navegador é
incompatível e não pode ser usado:
Isso
ocorre por que o controle WebBrowser por padrão emula o Internet Explorer 7,
que é um navegador muito antigo para suportar o Google Maps.
Então temos que forçar o WebBrowser a emular outra versão do IE mas isso só pode
ser feito via alteração do registro do sistema.
Na verdade a configuração que se deve alterar no registro depende do programa
que você está executando e a alteração tem que ser feita apenas para este
programa.
Para contornar o problema criamos uma rotina que verifica a versão instalada e faz a alteração no registro do sistema.
Recursos usados :
Criando o projeto no VS Community 2015
Abra o VS Community 2015 e clique em New Project;
Selecione a linguagem Visual Basic e o template Windows Forms Application
Informe o nome VBNET_Tasks e clique no botão OK;
No formulário form1.vb inclua os seguintes controles:
Disponha os controles no formulário conforme o leiaute da figura abaixo:
A seguir no evento Click do botão de comando : Mapa/Endereço -
inclua o código abaixo:
Private Sub btnMapaEndereco_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnMapaEndereco.Click
If VerificaNavegador() Then
Try
Dim rua As String = String.Empty
Dim cidade As String = String.Empty
Dim estado As String = String.Empty
Dim cep As String = String.Empty
Dim consultaEndereco As New StringBuilder()
consultaEndereco.Append("http://maps.google.com/maps?q=")
' monta a rua como parte da consulta
If txtRua.Text <> String.Empty Then
rua = txtRua.Text.Replace(" ", "+")
consultaEndereco.Append(rua + "," & "+")
End If
' monta a cidade como parte da consulta
If txtCidade.Text <> String.Empty Then
cidade = txtCidade.Text.Replace(" ", "+")
consultaEndereco.Append(cidade + "," & "+")
End If
' monta o estado como parte da consulta
If txtEstado.Text <> String.Empty Then
estado = txtEstado.Text.Replace(" ", "+")
consultaEndereco.Append(estado + "," & "+")
End If
' monta o cep como parte da consulta
If txtCep.Text <> String.Empty Then
cep = txtCep.Text.ToString()
consultaEndereco.Append(cep)
End If
' passa a url com a query string para o controle webbrowser
webb1.Navigate(consultaEndereco.ToString())
Catch ex As Exception
MessageBox.Show(ex.Message.ToString(), "Não foi possível obter o Mapa")
End Try
Else
MessageBox.Show("O Naveador usado é Incompatível", "Aviso")
End If
End Sub
|
Neste código estamos chamando a rotina VerificarNavegador() que irá verificar a versão do IE instalado e irá fazer a alteração no registro para que o WebBrowser possa renderizar as informações com a versão atualizada.
A seguir no evento Click do botão de comando - Mapa - Coordenadas - inclua o código abaixo:
Private Sub btnMapaCoordenadas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnMapaCoordenadas.Click
If VerificaNavegador() Then
If txtLatitude.Text = String.Empty Or txtLongitude.Text = String.Empty Then
MessageBox.Show("Forneça os valores para a latitude e a longitude.", "Dados inválidos")
End If
Try
Dim lat As String = String.Empty
Dim lon As String = String.Empty
Dim consultaEndereco As New StringBuilder()
consultaEndereco.Append("http://maps.google.com/maps?q=")
' toma a latitude como parte da consulta
If txtLatitude.Text <> String.Empty Then
lat = txtLatitude.Text
consultaEndereco.Append(lat + "%2C")
End If
' toma a longitude como parte da consulta
If txtLongitude.Text <> String.Empty Then
lon = txtLongitude.Text
consultaEndereco.Append(lon)
End If
webb1.Navigate(consultaEndereco.ToString())
Catch ex As Exception
MessageBox.Show(ex.Message.ToString(), "Error")
End Try
Else
MessageBox.Show("O Naveador usado é Incompatível", "Aviso")
End If
End Sub
|
Agora vamos definir o código do método VerificaNavegador() que obtém a versão do IE instalada e verifica o registro
Private Function VerificaNavegador() As Boolean Dim versaoNavegador As Integer, RegVal As Integer Try ' obtem a versão instalada do IE Using Wb As New WebBrowser() versaoNavegador = Wb.Version.Major End Using
' define a versão do IE
' define a chave atual
Catch ex As Exception |
Como o
aplicativo é baseado inteiramente no Google Maps, como um bônus adicional, o
site do Google Maps fornece todos os controles de manipulação de visualização
necessários para navegar no mapa.
Assim, sem esforço adicional, você obém recursos como zoom, mapas de tráfego,
mapas de ruas, imagens de varredura e mapas híbridos. Podemos também obter um
mapa de visão geral, a capacidade de imprimir o mapa, e-mail, ou link para ele
sem custo adicional.
Também é possível remover a interface e alimentar endereços específicos ou
coordenadas diretamente para o código equivalente e acessar mapas específicos
diretamente através de um controle de navegador da web.
Executando o projeto iremos obter o seguinte resultado:
Exibindo o mapa usando a latitude e longitude |
Exibindo o mapa usando o endereço |
Pegue o projeto completo aqui : VB_Maps.zip
Ninguém pode servir a dois senhores;
porque ou há de odiar um e amar o outro, ou se dedicará a um e desprezará o
outro. Não podeis servir a Deus e a Mamom.
Mateus 6:24
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
VB 2005 - Usando o Google Maps na sua aplicação - Macoratti.net