Guia e melhores práticas para o uso de múltiplos mapas
No desenvolvimento de aplicações Mega, é comum questionar se é apropriado adicionar múltiplos mapas (Blocks) a uma única biblioteca de localização. O uso incorreto de múltiplos mapas não apenas falha em melhorar a capacidade do aplicativo, como também pode levar a quedas de desempenho e saltos na localização.
Este guia orientará você a entender e utilizar corretamente a funcionalidade de múltiplos mapas, evitando armadilhas comuns.
Por que evitar adicionar vários mapas?
Princípio fundamental: não adicione múltiplos mapas para "ampliar a cobertura".
Na maioria esmagadora dos casos, uma biblioteca de localização deve conter apenas um único mapa Mega Block de um local específico. Abaixo estão alguns usos errôneos comuns que devem ser evitados:
Cenário de erro A: múltiplas áreas
- Intenção: criar mapas separados para "Área A", "Área B" e "Área C" de um complexo turístico interligado e adicionar todos à biblioteca, esperando uma transição suave à medida que o usuário se move pelo local.
- Problema: os três mapas não possuem relação matemática entre seus sistemas de coordenadas espaciais, sendo independentes. Devido à inconsistência dos sistemas de coordenadas, a transição suave durante o movimento é impossível, resultando em saltos de localização nas fronteiras entre as áreas.
- Solução: para esses cenários, a melhor abordagem é coletar as áreas "A", "B" e "C" conforme descrito em método de coleta de dados espaciais amplos, garantindo áreas de sobreposição suficientes. Realizar o mapeamento conforme descrito em tarefa de fusão de grande escala. Isso gera um único mapa Block com todas as áreas em um sistema de coordenadas unificado, que pode ser adicionado à biblioteca de localização.
Cenário de erro B: múltiplos locais
- Intenção: criar um mapa para um shopping center em um local e outro mapa para um shopping de mesmo nome em outro local, esperando usá-los simultaneamente em um único aplicativo.
- Problema: isso prejudica severamente a velocidade da localização. O dispositivo precisa comparar simultaneamente todos os mapas na biblioteca, aumentando drasticamente o cálculo e prolongando o tempo de inicialização. Como o usuário só pode estar em um shopping por vez, carregar o mapa do outro é desperdício de recursos. Solicitações intensas para um shopping também podem atrasar as respostas para o outro.
- Solução: criar bibliotecas de localização separadas para shoppings em locais diferentes, cada uma contendo apenas seu mapa. No aplicativo, acesse dinamicamente a biblioteca correspondente com base na localização atual do usuário.
Cenário de erro C: diferentes períodos do dia
- Intenção: coletar e mapear um local durante o dia e repetir à noite, adicionando ambos os mapas à biblioteca para garantir uma experiência consistente em diferentes horários.
- Problema: este cenário é semelhante ao erro A; os mapas resultantes não garantem relação de posição espacial entre si.
- Solução: siga o método em tarefa de fusão de grande escala para fundir as coletas diurna e noturna. Adicione o mapa Block único resultante à biblioteca de localização.
Cenário de erro D: diferentes versões
- Intenção: após já ter um mapa da versão A de um local em uso, criar um mapa atualizado da versão B durante operações futuras e adicioná-lo à biblioteca original, esperando utilizar o novo mapa sem republicar o aplicativo.
- Problema: como são versões diferentes do mesmo local, a localização pode saltar entre os dados das duas versões.
- Solução: atualize o mapa antigo conforme atualização total sem perdas, garantindo a atualização dos dados do mapa enquanto mantém o sistema de coordenadas. Após adicionar o mapa atualizado, remova obrigatoriamente o mapa da versão original da biblioteca de localização.
Cenário de erro E: atualização incremental
- Intenção: após ter um mapa da versão A em uso, criar um novo mapa B para uma pequena área que sofreu alterações ou necessitava de coleta adicional, adicionando-o à biblioteca original para usar sem republicar o aplicativo.
- Problema: o novo mapa B da pequena área não tem relação de coordenadas espaciais com o mapa A original, causando saltos de localização entre áreas novas e antigas.
- Solução: realize uma atualização incremental no mapa antigo conforme atualização complementar, garantindo que a nova pequena área mantenha o sistema de coordenadas do mapa antigo. Após adicionar o mapa atualizado, remova obrigatoriamente o mapa da versão original da biblioteca de localização.
Resumo: tentar juntar vários mapas pequenos para criar um mundo maior não é adequado para mapas de alta precisão do Mega. A filosofia do Mega é uma representação tridimensional de alta precisão, espacialmente contínua, com coordenadas unificadas e consistente no tempo e espaço.
Cenários que realmente exigem múltiplos mapas
Quando, então, é realmente necessário adicionar múltiplos mapas (Blocks) a uma biblioteca? Os principais cenários são "tarefas paralelas" ou "seleção de múltiplos espaços", não "junção espacial".
Cenário um: seleção de múltiplos espaços
- Descrição: seu aplicativo atende a múltiplas áreas completamente distintas dentro do mesmo local, mas limitações estruturais ou práticas de coleta impedem a conexão completa dessas áreas nos dados. O usuário pode precisar selecionar sua área atual primeiro (ex: diferentes andares de um grande hospital).
- Implementação: após a seleção da área pelo usuário, use essa informação prévia para ativar dinamicamente o mapa único correspondente a essa área. Em um dado momento, apenas um mapa participa do cálculo na biblioteca de localização. Quando o usuário muda para uma nova área, a seleção de área precisa ser reconfirmada.
Cenário dois: tarefas paralelas
- Descrição: seu aplicativo precisa rastrear simultaneamente dois ou mais objetos independentes e conhecidos, localizados no mesmo lugar mas sem relação entre si e com características muito distintas (ex: múltiplos itens de exposição em um museu).
- Implementação: neste cenário avançado, crie um mapa independente para cada objeto e adicione esses "mapas de objeto" a uma biblioteca de localização. Nota: o desempenho da localização dependerá do número de objetos na biblioteca. Se o número for muito grande, pode ser necessário equilibrar desempenho e número de bibliotecas, agrupando objetos e criando múltiplas bibliotecas.
Comportamento do lado de renderização ao usar múltiplos mapas
É importante notar que o comportamento de renderização 3D varia entre plataformas e versões ao usar localização com múltiplos mapas.
Melhores práticas recomendadas
Se seu caso se encaixa nos cenários descritos em cenários que realmente exigem múltiplos mapas, ou se você precisa usar múltiplos mapas, siga estes princípios:
- Ative sob demanda: carregue apenas o conteúdo 3D correspondente ao mapa relevante quando o usuário fizer uma escolha ou entrar em uma área específica, fornecendo a informação prévia na solicitação de localização.
- Mude dinamicamente: forneça uma UI clara para o usuário selecionar o cenário. Antes de carregar o conteúdo 3D de um novo mapa, descarregue o conteúdo 3D do mapa antigo para liberar memória.
- Gerencie o estado: gerencie explicitamente o mapa ativo no código. Monitore o Block ID nos resultados de localização para distinguir feedback de diferentes mapas.
- Monitore o desempenho: ao usar múltiplos mapas, monitore atentamente o uso de memória do dispositivo, latência de localização e consumo de energia para garantir que o aplicativo funcione sem problemas nos dispositivos-alvo.
Em resumo, para a grande maioria dos aplicativos, aderir ao princípio de "um cenário, um mapa" é a melhor escolha para garantir desempenho e estabilidade na localização com o Mega.