Use mapas vetoriais em vez de fazer o pré-download ou o armazenamento em cache de blocos de mapas renderizados.
Mapas vetoriais versus bitmap, mapas pré-renderizados e lado a lado
Aqui está a diferença: o cache do Google Maps ou de qualquer outro mapa pré-renderizado armazena dezenas a milhares de blocos de imagens (bitmap) no seu dispositivo. Mesmo compactados, eles ocupam gigabytes de armazenamento, principalmente se você estiver armazenando mapas para um país inteiro.
Além disso, imagens de bitmap são exatamente isso: Imagens. Os aplicativos de mapeamento e especialmente de navegação não podem interpretar o que é exibido na imagem. Então eles não sabem sobre o posto de gasolina mais próximo, o ponto de ônibus, em que rio você está remando, etc.
Um mapa vetorial está em algum formato de dados especial. Para ser exibida, ela deve ser renderizada, o que significa que uma imagem deve ser calculada com base nos dados brutos primeiro. Portanto, a maior desvantagem é que os aplicativos que as utilizam podem consumir mais CPU. No entanto, dependendo da qualidade e dos recursos contidos no mapa vetorial, e da qualidade e recursos do aplicativo, é possível consultar o mapa para navegação de carro, a pé, de bota, de bicicleta. Você pode obter informações sobre os restaurantes mais próximos ou a caixa de correio mais próxima.
Outra vantagem principal dos mapas vetoriais é seu tamanho muito menor em comparação aos dados de bitmap. Enquanto uma imagem de bloco de mapa pré-renderizada pode conter alguns dados de pixel esverdeados e variáveis para representar uma área arborizada que é linear proporcional à área coberta, o mesmo mapa vetorial pode apenas dizer "área arborizada" e armazenar as coordenadas do limite.
Outra vantagem, portanto, é que o aplicativo decide como renderizar a referida área arborizada e, assim, o usuário tem alguma influência sobre como ela gosta de mapas. Você pode dizer ao seu aplicativo de mapeamento para mudar para um esquema de cores vermelho / azul / preto durante a noite sem precisar fazer o download de um segundo conjunto de blocos de bitmap. Ele é recalculado em tempo real após a alteração de algumas configurações e não ocupa memória adicional.
A quantidade de armazenamento e o conjunto de recursos disponíveis são restritos pelos dados contidos no mapa vetorial. Portanto, dependendo das suas necessidades e dos aplicativos, alguns podem querer ter os dados completos do mapa de ruas abertas, enquanto outros se dão bem com apenas um conjunto básico.
Além disso, com mapas vetoriais e sua pequena quantidade de armazenamento e a capacidade de personalizar a renderização dentro de aplicativos, não há necessidade de usar nenhum aplicativo adicional na área de trabalho para preparar os mapas. Baixe arquivos e pronto. Enquanto na teoria isso funciona, na prática os arquivos de dados originais do projeto OpenStreetMap precisam ser convertidos em um formato sintaticamente diferente. Ver abaixo.
Voltando aos procedimentos e aplicativos, ainda sou iniciante no Android. Aqui está o que eu uso hoje.
O Open Street Map é um projeto para fornecer mapas vetoriais com todos os recursos gratuitamente. Como a Wikipedia, os dados do mapa podem ser aprimorados pelos usuários, e isso acontece o tempo todo.
Mapas vetoriais do Mapsforge
Os mapas vetoriais pré-montados do mapa de rua aberto podem ser encontrados como cortesia do projeto mapsforge , em http://download.mapsforge.org/maps/
Usando arquivos originais do Open Street Map
Os arquivos mapsforge acima podem ser usados como estão e, portanto, são a solução mais conveniente. No entanto, se você deseja iniciar a partir dos arquivos originais do Open Street Map, siga este guia para converter os arquivos originais do formato PBF para o formato de mapa usando Osmose . Um exemplo típico de linha de comando seria:
osmosis --read-pbf "hungary.osm.pbf" --mapfile-writer file="hungary.osm.map"
Locus
Como um aplicativo de mapeamento, você pode usar o Locus Free . Baixar e instalar.
Faça o download de qualquer arquivo de mapas vetoriais e armazene-o no telefone na pasta /mnt/sdcard/Locus/MapsVector/_themes/
. Pessoalmente, faço o download dos mapas no meu PC de mesa, armazeno-os em uma pasta que eu compartilho via Samba no Linux ou em uma máquina Windows. Então eu uso qualquer gerenciador de arquivos do Android ( Ghost Commander com plug-in Samba , ES File Explorer File Manager ) no meu telefone para copiar os arquivos do local compartilhado para a pasta de mapeamento do dispositivo Android.
OruxMaps
Você também pode usar o aplicativo OruxMaps . Infelizmente ainda não encontrei uma maneira de usar os dois aplicativos sem precisar armazenar os dados do mapa duas vezes. (Os cartões SD não suportam links simbólicos . Se você tiver os dados na memória interna, poderá usá-los e armazenar os mapas apenas uma vez). Você pode usar novamente o gerenciador de arquivos preferido no android para copiar os *.map
arquivos da pasta Locus acima mencionada para a pasta em que o OruxMaps armazena seus arquivos de mapa. Por padrão, isso é/mnt/sdcard/oruxmaps/mapfiles
Mude para o novo mapa:
- Clique no ícone "mapa" no canto superior direito
- Clique em "novo mapa" no menu pop-up
- Clique em "offline" no canto superior direito
- Escolha qualquer um dos arquivos de mapa * .map
Observe que no OruxMaps você pode navegar pelas subpastas. Portanto, se quiser, use o gerenciador de arquivos para organizar mapas em subpastas. Dica: você pode copiar completamente os dados do mapsforge na pasta de mapas do OruxMaps e nunca mais se preocupar :-)
Observe também que, se você tiver o aplicativo OruxMaps aberto enquanto estiver copiando novos arquivos de mapa para a pasta de dados, talvez seja necessário clicar em "redefinir fontes de mapa" na caixa de diálogo "novo mapa" para garantir que ele releia a pasta de mapa para novos arquivos.
Aqui está um tutorial sobre esses dois aplicativos para temas dos seus mapas . Como mencionado anteriormente, dependendo do aplicativo, você pode influenciar a maneira como os mapas vetoriais são renderizados. Isso inclui configurações de cores, bem como quais dados devem ser incluídos na tela e quais não.