Descripción general
GitHub:
https://github.com/brianmcleer/time-machine-widget
Time Machine es un widget personalizado para ArcGIS Experience Builder Developer Edition 1.19 y versiones posteriores (probado en la 1.21). Coloca un control deslizante de fecha en el mapa y hace que todas las capas con fechas lo sigan. Desliza hasta una fecha y el mapa muestra lo que había en ese momento.
No necesita servicios con tiempo habilitado. El widget lee los campos de cada capa, selecciona el campo de fecha y aplica un filtro además de cualquier filtro que la capa ya tenga. Las capas de entidades se filtran en la vista de capa del navegador. Las capas de imágenes de mapa con subcapas fechadas se filtran mediante una expresión de definición y se solicita una imagen nueva tras cada cambio.
Lo creamos para nuestra historia de anexiones, que se remonta a 1882 y está en un servicio de mapas con una subcapa por año o década. También funciona con una sola capa de entidades que tenga un campo de fecha.
(Disculpen la captura de pantalla; la nueva Comunidad de Esri no acepta archivos de video)
Qué hace
- Modos «A fecha», «Intervalo» y «Comparar». «Comparar» muestra dos fechas una junto a la otra, separadas por un divisor que puedes arrastrar.
- Avanza por día, mes o año, o cada N unidades de estos intervalos desde una opción avanzada. Reproduce a distintas velocidades, repite en bucle, restablece y vuelve a hoy; también permite ir al cambio anterior o al siguiente para saltar entre fechas en las que ocurrió algo.
- El intervalo del control deslizante se determina a partir de los datos: abarca las fechas más antiguas y más recientes de las capas activadas y se reajusta cuando se activan o desactivan capas en el mapa.
- Gráfico de actividad con el número de entidades por año o mes en ambos ejes.
- Una lista de capas que indica cuáles siguen el control deslizante, qué campo de fecha utiliza cada una y por qué se omitió una capa.
- Modo de presentación: un gran rótulo con la fecha en el mapa y opciones de reproducción, capítulos, una cuadrícula de capítulos con miniaturas, un foco, dibujo en el mapa, pantalla en blanco y negro, lectura en voz alta, una ventana del presentador con notas y reloj, atajos de teclado, enlaces para quioscos y un botón de velocidad. Los capítulos pueden configurar capas, el mapa base, un lugar, un vuelo o un corte, una ventana emergente de entidad y un tiempo de espera. Los colores, la fuente y el logotipo del rótulo se configuran en el creador.
- Capítulos de historias creados en tiempo de ejecución a partir de la vista actual, o generados a partir de los años con más actividad de los datos, con exportación a una presentación web, un video WebM o XML para el creador.
- Configuración del creador con un selector de capas obtenido del mapa (las capas de grupo se muestran como encabezados), reglas para las capas que el selector no puede ver, conjuntos de años para grupos de instantáneas anuales, secciones de rendimiento, presentación e identidad visual, e importación y exportación XML de toda la configuración.
- Guía de ayuda integrada en el widget, indicación inicial, accesibilidad mediante teclado y avisos para lectores de pantalla en todo el widget.
Requisitos
- Experience Builder Developer Edition 1.19 o posterior, React 19. Probado en la versión 1.21 con Maps SDK 5.x.
- Sin dependencias de terceros. Todo proviene de Experience Builder.
Instalación
- Descarga el archivo zip de la versión más reciente de GitHub (también se adjunta aquí).
- Copia la carpeta
time-machine en client\your-extensions\widgets\ para que manifest.json quede directamente dentro de widgets\time-machine\. No la anides un nivel más. - Ejecuta
pnpm install (versión 1.21 y posteriores) o npm install (versión 1.20 y anteriores) en la carpeta client y reinicia el cliente. - Añade Time Machine a una experiencia y selecciona el widget de mapa que controlará.
El archivo zip solo contiene el widget. Los archivos auxiliares del editor de Visual Studio del repositorio se excluyen intencionadamente, porque sus declaraciones de módulos globales afectarían a todos los demás widgets de la carpeta your-extensions. Si clonas el repositorio, elimina esos archivos antes de compilar; el archivo README los enumera.
Limitaciones conocidas
- Las capas de teselas y las imágenes solo se controlan mediante conjuntos de años (capas de grupo cuyos elementos secundarios llevan el nombre del año).
- Un servicio de mapas dibuja una imagen por cambio, así que, si el servicio es lento, la reproducción muestra menos imágenes que pasos. La fecha mantiene su ritmo y el mapa muestra la fecha más reciente que puede.
- El modo del lado del cliente lee hasta el límite de entidades por capa establecido en el creador (50 000 de forma predeterminada). Para las capas más grandes, el intervalo se calcula con estadísticas del servidor.
- La lectura en voz alta utiliza las voces del navegador y requiere que primero hagas clic en la página. La exportación de video es en formato WebM.
Comentarios
Se aceptan incidencias y solicitudes de incorporación de cambios en GitHub. Si se omite una capa o el intervalo parece incorrecto, la lista de capas del widget indica el motivo y la consola del navegador muestra una línea que empieza por [time-machine] y explica el resto.
Registro de cambios
10/12/2026: El widget ahora utiliza el idioma de la aplicación (?locale=, el selector de idioma, el perfil de ArcGIS o el navegador) en 39 idiomas, incluida la guía de ayuda.
- Primero, Esri. Lee las traducciones que ya están en tu instalación de Experience Builder, así que una frase como «Zoom to» utiliza la misma traducción que los propios widgets de Esri.
- Términos estándar. Los nombres de las unidades, como pies y acres, proceden de Unicode CLDR, los mismos datos que utilizan los navegadores.
- Memoria de traducción compartida. El resto se traduce con un diccionario compartido creado con LibreTranslate, un traductor de código abierto, y los modelos Opus-MT de Helsinki-NLP para bosnio, croata y serbio. Se ejecuta gratis en GitHub, así que no necesitas una clave de API ni una cuenta.
- Integración. También encuentra texto en inglés codificado fuera del archivo de traducción del widget, como una configuración predeterminada o una guía de ayuda, y lo conecta para que también se traduzca.
Las correcciones manuales siempre prevalecen sobre las automáticas y nunca se sobrescriben. Algunas traducciones se generan automáticamente; si detectas alguna que no suena bien, responde aquí con una alternativa mejor.
9/25/26: 1.0.0. Primera versión pública, disponible en GitHub con un archivo zip.