quarta-feira, 13 de fevereiro de 2008

MV Maps...

Então vamos lá....

Como eu tinha postado aqui, eu queria fazer uma pequena aplicação que servisse como exemplo do Google Maps API. A idéia era fazer um mapa meteorológico, sendo que a maior dificuldade seria conseguir os dados atualizados.

Pois bem, pesquisa vai, pesquisa vem...

Primeiro, descobri que o meu exemplo não é novo: o próprio Google, nas páginas de referências do API, apresenta a idéia de um mapa meteorológico para ilustrar a utilização do Zoom Level (aqui), sendo que os dados eram gerados de forma aleatória. E não é só isso. O que o Google apresentou como um exemplo, o The Weather Channel apresentou como aplicativo, como pode ser visto aqui, exatamente do jeito que eu pensei (será que eles leram o meu blog?). Como não gosto de apresentar algo que já foi apresentado, então vamos para outro exemplo.

Com a mudança para Gravataí, e com o meu Jeep (!!!) ainda em Soledade (veja o que postei aqui), tive que aprender a utilizar as linhas de ônibus municipais. E que melhor lugar que o Google Map para isto?. Primeiro, acessei o sitio da empresa de ônibus da cidade, a Sogil. Vi que lá não tem nenhum mapinha, nem no sitio da prefeitura municipal (então a idéia é nova). Peguei a relação das ruas onde passa as principais linhas do meu bairro e fui para o mapa.

A primeira dificuldade era plotar estes dados no mapa. Comecei tentando "forçar" o Geocoding, passando o nome da rua/avenida de toda a linha para o Maps localizar, só que na medida que as ruas eram adicionadas o sistema acabava ficando instável (obviamente não foi projetado para isto). A outra idéia foi fazer uma função que passasse os cruzamentos para a API localizar, através do Geocoding via http, e depois plotar os pontos recebidos no mapa. Claro que haveriam erros, principalmente os logradouros que não são retos, que teriam que ser resolvidos manualmente. Só que, infelizmente, localizar cruzamentos não funcionam nos mapas do Brasil, diferente se você tentasse localizar, por exemplo, montgomery dr & pine needle ln, miami, FL, ou montgomery dr corner pine needle ln, miami.

A solução seria colocar os ponto manualmente mesmo. Ao invés de usar uma série de coordenadas geográficas em modo "texto" para criar os overlays das linhas, resolvi criar, como recomenda o Google, utilizando o Encoded Polylines, que compacta os dados, acarretando em menor utilização de memória (os vetores criados a partir do polylines são gerados utilizando recursos locais, via de regra). Para tanto utilizei o Interactive Polyline Encoder Utility, disponibilizado pelo Google.

Continua no próximo post....

F.M.

P.S.: Um post completo sem falar na Claro 3G. Que milagre... (vide aqui, aqui, aqui, e aqui)