Mapa interactivo de países visitados

Por The Kaleidr Team · Publicado 16 de agosto de 2026 · 16 min de lectura

Un mapamundi interactivo con países marcados como visitados o por visitar, estadísticas de progreso de viaje y un buscador de países.

Un mapa interactivo de países visitados permite al viajero seleccionar países en un mapamundi, marcarlos como visitados o previstos, guardar ese estado y volver más adelante. A diferencia de un mapa de viajes con marcadores de ciudades, la geometría principal es la frontera nacional: cada país es un polígono o multipolígono vinculado a un identificador estable y a un estado del usuario. Una implementación sólida también define qué se considera país, documenta la fuente de las fronteras, mantiene seleccionables los países pequeños y separa los datos de viaje del estilo del mapa.

Las secciones siguientes abarcan arquitectura de datos, identificadores nacionales, política de fronteras, renderizado con MapLibre, persistencia, accesibilidad, privacidad, transición a Studio y errores comunes. Encontrarás el contexto del producto en Kaleidr Studio. Para mapas de lugares con marcadores, consulta Cómo crear un mapamundi de viajes con marcadores. Para representar muchos lugares, consulta Representar lugares en un mapa.

Aspectos esenciales de los países visitados

  • Polígonos, no marcadores: el seguimiento de países usa fronteras; los recuerdos de ciudades usan puntos.
  • Conjuntos de datos separados: la geometría compartida se une al estado personal mediante un ID estable.
  • Contar es una política: el denominador de países elegibles es una regla de producto, no un recuento de entidades.
  • El estado antes que el estilo: guarda visited / want_to_visit y después elige los colores.
  • Transición cuidadosa: un rastreador ligero puede conducir a mapas más completos en Studio sin exagerar sus funciones.

Un mapamundi interactivo con países marcados como visitados o por visitar, estadísticas de progreso de viaje y un buscador de países.

¿Qué es un mapa interactivo de países visitados?

Es un mapamundi cuyos países se comportan como objetos geográficos interactivos, no como un fondo estático. Normalmente, los usuarios seleccionan un país, lo marcan como visitado o lo añaden a su lista de deseos, buscan por nombre, ven un total o porcentaje actualizado, guardan el progreso y comparten un resumen general. El modelo básico combina geometría nacional, un ID de país estable y el estado de viaje del usuario. Las decisiones de producto importan: las fronteras son políticamente sensibles, los totales dependen de la política de recuento y el historial detallado de viajes futuros puede ser privado.

Experiencia Geometría principal Ideal para
Mapa de países visitados Polígonos nacionales Seguimiento de países, progreso mundial, listas de deseos
Mapa de viajes con marcadores Puntos Ciudades, monumentos, hoteles, restaurantes, recuerdos
Mapa de rutas Líneas + puntos Viajes por carretera, itinerarios, recorridos
Mapa de diario de viaje Puntos + contenido Notas, fotos, fechas, historias

Un rastreador de países responde qué países ha visitado una persona. Un mapa con marcadores responde qué lugares concretos ha visitado. Un buen producto de viajes puede admitir ambos sin forzarlos dentro de un único mapa sobrecargado.

¿Cómo deben almacenarse la geometría y el estado de viaje?

La arquitectura más limpia separa los datos geográficos de referencia del estado de viaje personal. Los datos de fronteras contienen identificadores estables, nombres de visualización, geometría Polygon o MultiPolygon, región o continente opcional, versión del conjunto y elegibilidad según la política de recuento. El estado del usuario contiene solo valores propios del viajero, como JP: visited o IS: want_to_visit. El diseño del mapa puede cambiar, pero el historial no debería hacerlo. No codifiques el estado de negocio solo como color: guarda primero el estado semántico y deja que el renderizador decida si se presenta en morado, turquesa, con patrón o contorno.

Los nombres de países son malas claves de base de datos porque varían el idioma, las abreviaturas, la puntuación, las convenciones, los cambios oficiales y la transliteración. ISO 3166 se usa ampliamente para códigos normalizados, y su Agencia de Mantenimiento administra el conjunto asignado (ISO 3166). Documenta qué identificador es la autoridad—ISO alfa-2, alfa-3 o un ID de entidad del proveedor de fronteras—y conserva la correspondencia entre entidades geográficas y estado del usuario.

GeoJSON admite geometrías Polygon y MultiPolygon; RFC 7946 define su estructura y usa posiciones con la longitud en primer lugar (RFC 7946). Muchos países necesitan MultiPolygon porque su territorio incluye islas u otras áreas separadas. Para conocer el orden de coordenadas, consulta Buscar una ubicación con latitud y longitud.

La geometría de fronteras y el estado personal se guardan por separado y se unen mediante identificadores estables para crear un mapa interactivo.

¿Cómo funcionan los conjuntos de fronteras y los recuentos?

Un rastreador necesita una fuente mantenida de geometría nacional. Natural Earth publica datos cartográficos de dominio público a escalas 1:10m, 1:50m y 1:110m, incluidos conjuntos Admin 0; su documentación distingue países, soberanía, unidades cartográficas, subunidades, zonas disputadas y variantes opcionales de perspectiva geográfica (Admin 0 — Countries). Un archivo de fronteras no es una definición universal de todos los países. La lista de Estados miembros de la ONU es una posible referencia, pero un producto de viajes puede tratar de forma distinta los Estados observadores, territorios, dependencias, países constituyentes o entidades disputadas (UN Member States). No trates silenciosamente el número de entidades GeoJSON como el número de países del mundo. Declara la elegibilidad en cada entidad y versiona la política para que los porcentajes sigan siendo explicables.

Las fronteras nacionales pueden representar disputas políticas y perspectivas geográficas diferentes. Un mapa de consumo no debe insinuar que su interfaz las resuelve. Documenta la fuente, la versión del conjunto, la versión de la política y el tratamiento de territorios; añade un aviso neutral, por ejemplo, que las fronteras y recuentos siguen el conjunto geográfico y la política usados por el mapa. No generes fronteras nacionales con un modelo de imágenes o lenguaje: usa datos geoespaciales mantenidos.

Diagrama de política geográfica que muestra cómo se clasifica un conjunto de fronteras antes de decidir qué entidades cuentan en el progreso.

¿Cómo se renderiza y actualiza la selección?

Un rastreador sencillo carga GeoJSON en una fuente del mapa, dibuja una capa de relleno, gestiona la selección, actualiza el almacén del usuario, cambia el estilo y refresca el progreso y la lista. MapLibre GL JS puede renderizar polígonos GeoJSON con una capa fill (Añadir un polígono GeoJSON). Prioriza los cambios de estado de la aplicación: alterna el estado, persístelo, actualiza el estilo de la entidad afectada y recalcula las estadísticas. Evita reconstruir todo el conjunto tras cada clic. Admite más de un estado binario cuando haga falta: visitado, por visitar y no visitado cubren la mayoría de necesidades.

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
    }
  });
});

Confirma el esquema real de propiedades del conjunto elegido antes de implementar. Usa colores accesibles de tu sistema de diseño, no los valores ilustrativos anteriores.

¿Cómo deben funcionar la persistencia, accesibilidad y privacidad?

Las experiencias anónimas pueden guardar selecciones en el estado local y el almacenamiento del navegador del mismo dispositivo. Las experiencias con sesión iniciada sincronizan un perfil autorizado en el backend entre dispositivos. El renderizador muestra el estado; no debe convertirse en el sistema de identidad o persistencia. Versiona los metadatos de política geográfica junto con los perfiles para que futuras actualizaciones no reescriban silenciosamente el progreso histórico.

Añade una lista de países con búsqueda sincronizada con el mapa para que los países pequeños sigan siendo seleccionables en móvil. Ofrece controles por teclado, foco visible y un estado que no dependa solo del color. Prefiere instantáneas generales—recuentos y conjuntos públicos de países—antes que exportar por defecto fechas exactas, hoteles, rutas, ubicación actual o planes futuros. Trata la lista de deseos y los viajes previstos como información sensible; no publiques destinos futuros salvo elección explícita.

La IA puede organizar categorías, sugerir capas urbanas más densas tras seleccionar un país o refinar el estilo, pero las selecciones del usuario siguen siendo el historial autorizado. No inventes países visitados a partir del conocimiento del modelo.

¿Qué papel tiene Kaleidr Studio?

Un rastreador ligero puede satisfacer primero la intención de búsqueda y después conducir a una creación más rica. Kaleidr Studio permite actualmente crear mapas interactivos personalizados a partir de indicaciones, con mapas basados en datos, regiones temáticas, marcadores, capas, estilo visual, publicación e inserción. La página pública no documenta hoy un rastreador específico con persistencia automática por usuario, contador integrado o modo concreto de alternancia visitado/lista de deseos; no describas esas capacidades como funciones actuales hasta que estén implementadas y documentadas. El recorrido recomendado es: rastreador interactivo → guardar o compartir → convertir en un mapa de viajes más rico → refinar y publicar en Studio. Usa geometría mundial generalizada para mejorar el rendimiento, mantén pequeñas las cargas del estado y carga detalle urbano solo cuando se solicite.

Un rastreador avanza desde la selección de países hasta un perfil guardado, un mapa detallado, la edición en Studio y un mapa interactivo publicado.

¿Qué errores deben evitar los equipos?

Error Qué sucede Mejor enfoque
Usar nombres como clave principal La localización rompe el estado Usar identificadores estables
Tratar el color como dato de viaje Los temas rompen la lógica Guardar el estado semántico aparte
Contar entidades GeoJSON como países Los territorios distorsionan totales Definir una política de elegibilidad
Fijar un total universal Las suposiciones quedan ocultas Publicar la política de recuento
Ignorar la perspectiva fronteriza El mapa parece políticamente autoritativo Documentar fuente y política
Usar marcadores en vez de polígonos No se satisface la intención nacional Hacer interactivas las áreas
Impedir seleccionar países pequeños Sufren móvil y accesibilidad Añadir búsqueda y lista sincronizada
Exigir registro antes del primer clic Aumenta la fricción Permitir primero estado local cuando proceda
Compartir por defecto el historial exacto Aumenta el riesgo de privacidad Compartir solo el estado general previsto
Usar IA como verdad del historial Puede inventarse el estado Mantener autoritativas las selecciones

Veredicto final

Un mapa interactivo de países visitados solo es técnicamente sencillo si el producto ignora las decisiones que lo hacen fiable. La implementación básica combina fronteras, ID estables, estado del usuario, una capa de relleno interactiva y progreso guardado. Las preguntas difíciles son de producto: qué cuenta como país, qué conjunto sigue el mapa, cómo trata territorios y áreas disputadas, si el estado persiste entre dispositivos, qué se comparte y si el mapa nacional puede evolucionar a uno más rico de lugares. La mejor experiencia comienza con la tarea buscada: hacer clic en países y ver la actualización inmediata. Después puede llegar la creación avanzada mediante Kaleidr Studio cuando se necesiten lugares, regiones, capas, estilo y publicación más allá del progreso nacional.

Crea un mapa de viajes más completo con Kaleidr Studio

Convierte países, ciudades, lugares e ideas de viaje en un mapa interactivo personalizable. Empieza a crear en Kaleidr Studio cuando quieras pasar de seleccionar países a elaborar mapas de viaje más ricos.

Preguntas frecuentes

¿Qué es un mapa interactivo de países visitados?

Es un mapamundi que permite seleccionar países y guardar su estado, normalmente como visitado, por visitar o no visitado.

¿En qué se diferencia de un mapa con marcadores?

El primero resalta fronteras nacionales. El segundo señala ciudades, monumentos, hoteles, restaurantes u otros lugares concretos.

¿Qué datos cartográficos necesito?

Geometría de fronteras—normalmente entidades Polygon o MultiPolygon—, identificadores estables y un registro separado del estado del usuario.

¿Puedo usar GeoJSON para las fronteras?

Sí. GeoJSON admite Polygon y MultiPolygon y se usa ampliamente en cartografía web.

¿Qué código de país debo guardar?

ISO 3166 alfa-2 o alfa-3 son opciones habituales. Usa identificadores estables de forma coherente y documenta cómo se vinculan al conjunto de fronteras.

¿Cuántos países debe contar el mapa?

No existe un único denominador obligatorio. Define si cuenta solo un conjunto de referencia, también Estados observadores, territorios u otra política documentada.

¿Por qué algunas aplicaciones muestran totales distintos?

Pueden usar definiciones, conjuntos de fronteras o tratamientos de territorios y áreas disputadas diferentes.

¿Cómo deben tratarse las fronteras disputadas?

Usa un conjunto geográfico mantenido, documenta su perspectiva o política y evita insinuar que la aplicación resuelve disputas políticas.

¿Puede funcionar sin una cuenta?

Sí. El almacenamiento local conserva selecciones en el mismo dispositivo. Una cuenta ayuda a sincronizar, respaldar o compartir de forma duradera.

¿Puede Kaleidr Studio crear mapas de viajes?

Sí. Actualmente admite creación a partir de indicaciones con regiones temáticas, marcadores, capas, estilo visual, publicación e inserción. La página pública no documenta un contador específico por usuario ni un rastreador de alternancia de países.

Referencias

@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/}
}