Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Google Maps - Tira dúvidas artigo ClubeDelphi 104

Após a publicação do artigo sobre Google Maps na ClubeDelphi 104, houve uma mudança no sistema do Google que acabou causando dúvida em todos. Vejam as explicações nesse artigo on-line.

Google Maps com Win32

Integre seus sistemas com o Google Maps

 

Após a publicação do meu artigo sobre Google Maps na ClubeDelphi 104, recebi muitos e-mails de leitores informando que o código não funcionava, então resolvi investigar o problema para ver onde que ocorreu o erro. Descobri que problema não está no código publicado na revista e sim por um motivo bem simples: a rua é nova e não consta no banco de dados do Google ou simplesmente há algo de errado em um dos endereços digitados. É o que diz a mensagem exibida pelo endereço original de exemplo utilizado na revista como podemos ver na Figura 1.



Figura 1. Erro na página original do Google


Ao traduzirmos a mensagem teremos o texto


"A localização geográfica de um dos endereços não pode ser encontrada. Isso pode ser devido ao fato do endereço ser relativamente novo ou incorreto."


Muitos leitores conseguiram visualizar as respectivas rotas apenas modificando e testando outros endereços no exemplo criado. Em estudo descobri que podem ocorrer outros erros que na verdade são avisos, por exemplo. Quando joguei a rota:


Origem: Rua Dança do Fogo, 91, Sao Paulo, SP
Destino: Rua Direita 100, Centro, Sao Paulo, SP


A mensagem "Essa rota possui muitos vértices" aparece, como na Figura 2. Esse aviso aparece porque o caminho é bastante longo e um alerta é exibido. De qualquer forma a rota é carregada normalmente (Figura 3).



Figura 2. Mensagem de alerta



Figura 3. Mapa carregado



Uma alternativa para esse "erro" é omitir a mensagem apenas retirando-a do código JavaScript como vemos a seguir em um trecho de código:


...

  Add('      function onGDirectionsLoad(){');
  Add('        var poly = gdir.getPolyline();');
//  Add('        if (poly.getVertexCount() > 100) {');
//  Add('          alert("Esta rota possui muitos vértices.");');
//  Add('          return;');
//  Add('        }');

...


Estudando mais ainda a API do Google percebi que houve uma pequena alteração nela. Quando jogamos um endereço que ele possivelmente não reconhece, o Google Maps mostra uma lista de possíveis ruas a esquerda do mapa.


Experimente digitar o endereço: Rua 15 de Novembro, 466, Sao Paulo, SP no link maps.google.com  e veja o que acontece (Figura 4). Uma lista é carregada a esquerda e o mais impressionante, nenhuma das ruas corresponde ao endereço digitado. A rua citada, uma das mais conhecidas de São Paulo, não foi encontrada de forma alguma no Google para frustração do autor. Testei pessoalmente diversas ruas que contém números como Av 23 de Maio, Largo 13 de Maio, Rua 18 de Setembro, e, aparentemente, o Google possui alguma dificuldade em encontrar as ruas ou a mesma está cadastrada de forma diferente, com algarismos romanos, por exemplo.




Figura 4.Sugestão de ruas


Então na realidade, o grande lance do Google Maps é estudar bem seus exemplos e tentar reproduzí-los na aplicação. O segredo do artigo foi transformar todo o conteúdo dos exemplos em uma grande String. As áreas variáveis foram concatenadas a essa grande string, exemplo:







Perceba que concatenamos a string que monta a tag em HTML ao texto que recebemos por parâmetro na função, veja:


procedure TForm1.CriarMapa(AOrigem, ADestino, ALocalidade: string);



Add('' + '''' + AOrigem + '''' + ',' + '''' + ADestino + '''' + ',' + '''' + ALocalidade + '''' + '); return false">');


Azul: é código HTML que foi incluído entre Strings;
Vermelho: As variáveis que recebemos por parâmetro;
Verde: Código Delphi;


No final de tudo inserimos o conteúdo da super-string em uma variável do tipo TStringList e a salvamos no disco rígido como um arquivo HTML:


SaveToFile(ExtractFilePath(Application.ExeName)+'mapa2.html');

E então carregamos o arquivo no TWebBrowser para ser exibido para o usuário final.
Realmente não há nenhum segredo.

WebBrowser1.Navigate(ExtractFilePath(Application.ExeName)+'mapa2.html');

Até mais e um forte abraço.





    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Autor
Adriano Santos

(asrsantos@gmail.com)é especialista Delphi e PHP. Foi editor chefe e colunista da revista ClubeDelphi e WebMobile. Atua como Product Manager na SPK Tecnologia. Possui mais de 30 vídeo-aulas e mais de 70 artigos publicados na revista ClubeDelphi e outros 20 no portal Devmedia. Membro fundador do gr...


Space do autor
Estatísticas #
Favorito:
Comentários:
Feedback:
Utilidade:
1   1
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação DevMedia).


  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03