quarta-feira, abril 01, 2009

Rotas com o Google Maps no Delphi – versão simplificada.

 

      Após publicar as matérias anteriores sobre como mostrar os mapas do Google e como traçar rotas do Google a partir de aplicativos Delphi, conversando com o Paulo Geloramo da Assis Informática de Assis – SP, ele me mostrou uma versão mais simplificada que ele fez da rotina.

     Durante a nossa conversa, acabamos indo pesquisar o que seriam alguns dos parâmetros que existem no final da URL de pesquisa que carrega o mapa e traça a rota.

      Fazendo algumas experimentações, chegamos à conclusão e constatamos que a rotina funciona mesmo sem aqueles parâmetros, o que a torna mais simplificada ainda.

     Bom, aqui abaixo mais uma função para mostrar o mapa e traçar a rota, agora bem mais simplificada:

procedure Rota(Logradouro1, Numero1, Cidade1, UF1, CEP1, Logradouro2, Numero2, Cidade2, UF2, CEP2: string);
var
    strUrl: String;
begin
  strURL := 'http://maps.google.com.br/maps?f=q&source=s_q&hl=pt-BR&geocode=&q=' +
            ' from: ' +  AnsiToUtf8(Logradouro1) + ', ' +  Numero1 + ', ' +
            AnsiToUtf8(Cidade1) + ', ' +  UF1 + ', ';
  if Length(CEP1) > 1 Then
     strURL := strURL + FormatMaskText('99999-999;0; ', CEP1);
  strURL := strURL + ' to: ' +  AnsiToUtf8(Logradouro2) + ', ' +
                      Numero2 + ', ' +  AnsiToUtf8(Cidade2) + ', ' + UF2 + ', ';
  if Length(CEP2) > 1 Then                     
     strURL := strURL + FormatMaskText('99999-999;0; ', CEP2)' + ‘&ie=UTF8’;
  ShellExecute(0, nil, PChar(strURL), nil, nil, 0);
end;

    Veja que os parâmetros de CEP podem não ser informados (passar uma string vazia como parâmetro), mas se o endereço existir em duplicidade na cidade (como é o caso de São Paulo), você terá problemas ao traçar a rota.

    Para definir corretamente o endereço, passe o parâmetro de CEP para a API processar a URL sem ambiguidades.

    Você pode acrescentar o parâmetro de zoom ao final da URL, utilizando o parâmetro ‘&z=’, se optar por não utilizar este parâmetro será retornado o mapa com o zoom abrangendo toda a rota, e o usuário poderá posicionar e escolher o nível de zoom manualmente.

     Veja também que foi usada a função AnsiToUtf8 do Delphi, isto é para os casos em que você possui acentuação no nome do endereço, se não usar esta conversão, a função não irá funcionar como o esperado.

www.spectrus.com.br

2 comentários:

Unknown disse...

FidiDeus, parabéns, muuuuuuiiiiito bom isso.
Giba

Anônimo disse...

Hurrah, that's what I was exploring for, what a material! present here at this web site, thanks admin of this website.

Also visit my web blog: Bench Craft Company advertising agencies in atlanta jobs