Um mapa interativo de países visitados permite ao viajante selecionar países num mapa-múndi, marcá-los como visitados ou planeados, guardar esse estado e regressar mais tarde. Ao contrário de um mapa de viagem com pinos de cidades, a geometria principal é a fronteira do país: cada país é um Polygon ou MultiPolygon ligado a um identificador estável e ao estado do utilizador. Uma implementação robusta também define o que conta como país, documenta a fonte das fronteiras, mantém os países pequenos selecionáveis e separa os dados de viagem do estilo do mapa.
As secções seguintes abordam arquitetura de dados, identificadores, política de fronteiras, renderização MapLibre, persistência, acessibilidade, privacidade, transição para o Studio e erros comuns. O contexto do produto encontra-se em Kaleidr Studio. Para mapas de lugares com pinos, consulte Como criar um mapa-múndi de viagem com pinos. Para representar muitos locais, consulte Representar locais num mapa.
Elementos essenciais
- Polígonos, não pinos: o acompanhamento de países usa fronteiras; as memórias de cidades usam pontos.
- Conjuntos separados: a geometria partilhada liga-se ao estado pessoal por um ID estável.
- A contagem é uma política: o denominador de países elegíveis é uma regra de produto, não uma contagem de elementos.
- Estado antes do estilo: guarde
visited/want_to_visite depois escolha as cores.- Transição cuidadosa: um rastreador leve pode conduzir a mapas mais ricos no Studio sem exagerar funcionalidades.

O que é um mapa interativo de países visitados?
É um mapa-múndi cujos países funcionam como objetos geográficos interativos em vez de um fundo estático. Normalmente, os utilizadores selecionam um país, marcam-no como visitado ou adicionam-no à lista de desejos, pesquisam pelo nome, veem uma contagem ou percentagem atualizada, guardam o progresso e partilham um resumo geral. O modelo central combina a geometria, um ID estável e o estado de viagem. As decisões de produto são importantes: as fronteiras são politicamente sensíveis, os totais dependem da política de contagem e o histórico detalhado de viagens futuras pode ser privado.
| Experiência | Geometria principal | Ideal para |
|---|---|---|
| Mapa de países visitados | Polígonos nacionais | Acompanhar países, progresso mundial, listas de desejos |
| Mapa com pinos | Pontos | Cidades, monumentos, hotéis, restaurantes, memórias |
| Mapa de rotas | Linhas + pontos | Viagens de carro, itinerários, percursos |
| Mapa de diário | Pontos + conteúdo | Notas, fotografias, datas, histórias |
Um rastreador responde quais países foram visitados; um mapa com pinos responde quais lugares específicos foram visitados. Um bom produto pode suportar ambos sem os forçar num único mapa sobrecarregado.
Como guardar a geometria e o estado de viagem?
A arquitetura mais limpa separa dados geográficos de referência do estado pessoal. Os dados de fronteiras guardam identificadores estáveis, nomes de apresentação, geometria Polygon/MultiPolygon, região ou continente opcional, versão do conjunto e elegibilidade segundo a política. O estado do utilizador guarda apenas valores do viajante, como JP: visited ou IS: want_to_visit. O design pode mudar; o histórico não deve mudar. Não codifique o estado do negócio apenas como cor: guarde o estado semântico e deixe o renderizador escolher roxo, turquesa, padrão ou contorno.
Os nomes de países são chaves fracas porque variam idioma, abreviatura, pontuação, convenções, alterações oficiais e transliteração. ISO 3166 é amplamente usado para códigos normalizados, e a agência de manutenção gere os códigos atribuídos (ISO 3166). Documente qual identificador é autoritativo—ISO alpha-2, alpha-3 ou ID do fornecedor—e preserve a correspondência entre elementos geográficos e estado.
GeoJSON suporta Polygon e MultiPolygon; RFC 7946 define a estrutura e usa coordenadas com longitude primeiro (RFC 7946). Muitos países exigem MultiPolygon por incluírem ilhas ou áreas separadas. Para a ordem das coordenadas, consulte Pesquisar um local com latitude e longitude.

Como funcionam os conjuntos de fronteiras e as contagens?
Um rastreador precisa de uma fonte mantida de geometrias nacionais. A Natural Earth publica dados de domínio público nas escalas 1:10m, 1:50m e 1:110m, incluindo conjuntos Admin 0; a documentação distingue países, soberania, unidades cartográficas, subunidades, áreas disputadas e variantes opcionais de perspetiva geográfica (Admin 0 — Countries). Um ficheiro de fronteiras não é uma definição universal. A lista de Estados-Membros da ONU é uma referência possível, mas um produto pode tratar de modo diferente Estados observadores, territórios, dependências, países constituintes ou entidades disputadas (UN Member States). Não trate o número de elementos GeoJSON como o número de países. Torne a elegibilidade explícita e versione a política para manter as percentagens explicáveis.
As fronteiras podem representar disputas políticas e diferentes perspetivas geográficas. Um mapa de consumo não deve sugerir que a interface resolve essas disputas. Documente fonte, versão, política de contagem e tratamento de territórios e inclua um aviso neutro de que fronteiras e totais seguem o conjunto e a política usados. Não gere fronteiras com modelos de imagem ou linguagem; use dados geoespaciais mantidos.

Como renderizar e atualizar a seleção?
Um rastreador simples carrega GeoJSON numa fonte, desenha uma camada de preenchimento, processa a seleção, atualiza o estado, volta a estilizar elementos e atualiza progresso e lista. MapLibre GL JS renderiza polígonos GeoJSON com uma camada fill (Adicionar um polígono GeoJSON). Altere primeiro o estado da aplicação: mude o estado, persista-o, atualize o estilo do elemento afetado e recalcule as estatísticas. Evite reconstruir todo o conjunto após cada clique. Quando necessário, suporte visitado, quero visitar e não visitado.
import maplibregl from "maplibre-gl";
const visited = new Set(["JPN", "FRA", "CAN"]);
const map = new maplibregl.Map({
container: "map",
style: "https://demotiles.maplibre.org/style.json",
center: [10, 20],
zoom: 1.2
});
map.on("load", async () => {
const countries = await (await fetch("/data/countries.geojson")).json();
countries.features = countries.features.map((feature) => ({
...feature,
properties: {
...feature.properties,
visit_status: visited.has(feature.properties.iso_a3)
? "visited"
: "not_visited"
}
}));
map.addSource("countries", { type: "geojson", data: countries });
map.addLayer({
id: "countries-fill",
type: "fill",
source: "countries",
paint: {
"fill-color": [
"match",
["get", "visit_status"],
"visited", "#6f5bd3",
"want_to_visit", "#72c4c9",
"#d8d8d8"
],
"fill-opacity": 0.65
}
});
});
Confirme o esquema real de propriedades antes de implementar. Use cores acessíveis do seu sistema de design, em vez dos valores ilustrativos acima.
Como devem funcionar persistência, acessibilidade e privacidade?
Experiências anónimas podem manter seleções no estado local e armazenamento do navegador no mesmo dispositivo. Experiências autenticadas sincronizam um perfil autorizado no backend entre dispositivos. O renderizador apresenta o estado; não deve ser o sistema de identidade ou persistência. Versione metadados da política junto dos perfis para que atualizações futuras não reescrevam silenciosamente o progresso histórico.
Adicione uma lista pesquisável e sincronizada com o mapa para que países pequenos continuem selecionáveis em dispositivos móveis. Forneça controlos por teclado, foco visível e estado não comunicado apenas por cor. Prefira partilhas gerais—contagens e conjuntos públicos—em vez de exportar por predefinição datas exatas, hotéis, rotas, localização atual ou planos futuros. Trate listas de desejos e viagens planeadas como sensíveis e só publique destinos futuros por escolha explícita.
A IA pode organizar categorias, sugerir camadas urbanas mais densas ou refinar o estilo, mas as seleções do utilizador continuam a ser o histórico autoritativo. Não invente países visitados com conhecimento do modelo.
Onde entra o Kaleidr Studio?
Um rastreador leve pode satisfazer primeiro a intenção de pesquisa e depois conduzir à criação de mapas mais ricos. Kaleidr Studio suporta atualmente criação orientada por prompts, mapas baseados em dados, regiões temáticas, marcadores, camadas, estilo visual, publicação e incorporação. A página pública não documenta um rastreador dedicado com persistência automática por utilizador, contador integrado ou modo específico visitado/lista de desejos; não descreva essas capacidades como atuais até serem implementadas e documentadas. Percurso recomendado: rastreador → guardar ou partilhar → transformar num mapa mais rico → refinar e publicar no Studio. Use geometria mundial generalizada para desempenho, mantenha pequena a carga de estado e carregue detalhes urbanos apenas quando pedidos.
![]()
Que erros devem as equipas evitar?
| Erro | Resultado | Melhor abordagem |
|---|---|---|
| Usar nomes como chave primária | A localização quebra o estado | Usar identificadores estáveis |
| Tratar a cor como dados | Mudanças de tema quebram a lógica | Guardar estado semântico separado |
| Contar elementos GeoJSON como países | Territórios distorcem totais | Definir uma política de elegibilidade |
| Fixar um total universal | Pressupostos ficam invisíveis | Publicar a política de contagem |
| Ignorar a perspetiva fronteiriça | O mapa parece politicamente autoritativo | Documentar fonte e política |
| Usar pinos em vez de polígonos | A intenção nacional não é satisfeita | Tornar áreas interativas |
| Impedir selecionar pequenos Estados | Sofrem móvel e acessibilidade | Adicionar pesquisa e lista sincronizada |
| Exigir registo antes do primeiro clique | Aumenta a fricção | Permitir primeiro estado local quando adequado |
| Partilhar histórico exato por defeito | Aumenta o risco de privacidade | Partilhar só o estado geral pretendido |
| Usar IA como verdade do histórico | O estado pode ser inventado | Manter as seleções como autoridade |
Veredito final
Um mapa interativo de países visitados só é tecnicamente simples se o produto ignorar as decisões que o tornam fiável. O núcleo inclui fronteiras, IDs estáveis, estado de viagem, camada de preenchimento interativa e progresso guardado. As questões difíceis são de produto: o que conta como país, que conjunto seguir, como tratar territórios e áreas disputadas, se o estado persiste entre dispositivos, o que é público e se o mapa nacional pode evoluir para um mapa mais rico de lugares. A melhor experiência começa pela tarefa pesquisada: clicar em países e ver a atualização imediata. A criação mais rica pode vir depois através do Kaleidr Studio quando forem necessários locais, regiões, camadas, estilo e publicação.
Crie um mapa de viagem mais rico com o Kaleidr Studio
Transforme países, cidades, lugares e ideias num mapa interativo personalizável. Comece a criar no Kaleidr Studio quando quiser ir além da seleção de países.
Perguntas frequentes
O que é um mapa interativo de países visitados?
É um mapa-múndi que permite selecionar países e guardar o respetivo estado como visitado, quero visitar ou não visitado.
Em que difere de um mapa com pinos?
O mapa de países realça fronteiras nacionais; o mapa com pinos marca cidades, monumentos, hotéis, restaurantes ou outros locais específicos.
Que dados são necessários?
Geometria de fronteiras—normalmente Polygon ou MultiPolygon—, identificadores estáveis e um registo separado do estado do utilizador.
Posso usar GeoJSON?
Sim. GeoJSON suporta Polygon e MultiPolygon e é amplamente usado em mapas Web.
Que código de país devo guardar?
ISO 3166 alpha-2 ou alpha-3 são escolhas comuns. Use identificadores estáveis e documente a ligação ao conjunto de fronteiras.
Quantos países deve contar?
Não existe um denominador universal. Defina se conta uma referência específica, também Estados observadores, territórios ou outra política documentada.
Por que razão as aplicações mostram totais diferentes?
Podem usar definições, conjuntos de fronteiras ou tratamentos de territórios e áreas disputadas diferentes.
Como tratar fronteiras disputadas?
Use um conjunto mantido, documente a perspetiva ou política e não sugira que a aplicação resolve disputas políticas.
Pode funcionar sem conta?
Sim. O armazenamento local preserva seleções no mesmo dispositivo. Uma conta ajuda na sincronização, cópia de segurança ou partilha duradoura.
O Kaleidr Studio cria mapas de viagem?
Sim. Atualmente suporta criação por prompt com regiões temáticas, marcadores, camadas, estilo, publicação e incorporação. Um contador dedicado por utilizador ou rastreador de alternância não está documentado na página pública.
Referências
- Organização Internacional de Normalização. ISO 3166 — Códigos de países. Consultado em 16 de agosto de 2026. https://www.iso.org/iso-3166-country-codes.html
- Internet Engineering Task Force. RFC 7946: O formato GeoJSON. 2016. https://datatracker.ietf.org/doc/html/rfc7946
- Kaleidr. Criar mapas personalizados com um criador de mapas por IA. Consultado em 16 de agosto de 2026. https://kaleidr.com/studio
- Kaleidr. Desenvolver com Kaleidr. Documentação para programadores. Consultado em 16 de agosto de 2026. https://docs.kaleidr.com/
- MapLibre. Adicionar um polígono GeoJSON. Documentação MapLibre GL JS. Consultado em 16 de agosto de 2026. https://maplibre.org/maplibre-gl-js/docs/examples/add-a-geojson-polygon/
- Natural Earth. Admin 0 — Countries. Versão 5.1.1. Consultado em 16 de agosto de 2026. https://www.naturalearthdata.com/downloads/110m-cultural-vectors/110m-admin-0-countries/
- Nações Unidas. Estados-Membros. Consultado em 16 de agosto de 2026. https://www.un.org/en/about-us/member-states
@misc{iso_3166_country_codes,
title = {ISO 3166 -- Country Codes},
author = {{International Organization for Standardization}},
note = {Accessed 16 August 2026},
url = {https://www.iso.org/iso-3166-country-codes.html}
}
@misc{rfc7946,
title = {RFC 7946: The GeoJSON Format},
author = {Butler, Howard and Daly, Martin and Doyle, Allan and Gillies, Sean and Hagen, Stefan and Schaub, Tim},
year = {2016},
publisher = {Internet Engineering Task Force},
url = {https://datatracker.ietf.org/doc/html/rfc7946}
}
@misc{natural_earth_admin0,
title = {Admin 0 -- Countries},
author = {{Natural Earth}},
note = {Version 5.1.1; accessed 16 August 2026},
url = {https://www.naturalearthdata.com/downloads/110m-cultural-vectors/110m-admin-0-countries/}
}
@misc{un_member_states,
title = {Member States},
author = {{United Nations}},
note = {Accessed 16 August 2026},
url = {https://www.un.org/en/about-us/member-states}
}
@misc{maplibre_geojson_polygon,
title = {Add a GeoJSON Polygon},
author = {{MapLibre}},
note = {MapLibre GL JS documentation; accessed 16 August 2026},
url = {https://maplibre.org/maplibre-gl-js/docs/examples/add-a-geojson-polygon/}
}
@misc{kaleidr_studio_2026_08_16,
title = {Create Custom Maps with AI Map Maker},
author = {{Kaleidr}},
note = {Accessed 16 August 2026},
url = {https://kaleidr.com/studio}
}
@misc{kaleidr_docs_2026_08_16,
title = {Build with Kaleidr},
author = {{Kaleidr}},
note = {Developer documentation; accessed 16 August 2026},
url = {https://docs.kaleidr.com/}
}