Visão geral
GitHub:
https://github.com/brianmcleer/time-machine-widget
O Time Machine é um widget personalizado para o ArcGIS Experience Builder Developer Edition 1.19 ou posterior (testado na versão 1.21). Ele adiciona um controle deslizante de data ao mapa e faz com que todas as camadas com datas o acompanhem. Arraste até uma data e o mapa mostrará o que havia nela.
Ele não precisa de serviços com suporte a horário. O widget lê os campos de cada camada, identifica o campo de data e aplica um filtro sobre qualquer filtro que a camada já tenha. As camadas de feições são filtradas na visualização da camada no navegador. As camadas de imagens de mapa com subcamadas datadas são filtradas com uma expressão de definição e solicitadas a gerar uma nova imagem após cada alteração.
Criamos o widget para o nosso histórico de anexações, que remonta a 1882 e está em um serviço de mapa com uma subcamada por ano ou década. Ele também funciona em uma única camada de feições com um campo de data.
(Desculpem pela captura de tela; a nova Comunidade Esri não aceita arquivos de vídeo)
O que ele faz
- Modos Em, Intervalo e Comparar. Comparar mostra duas datas lado a lado, separadas por um divisor que você pode arrastar.
- Avance por dia, mês ou ano, ou a cada N unidades, usando uma opção avançada. Reproduza com velocidade ajustável, repita, use Redefinir e Hoje, além de Alteração anterior e Próxima alteração para pular entre datas em que algo aconteceu.
- O intervalo do controle deslizante é determinado pelos dados: ele se ajusta às datas mais antiga e mais recente das camadas ativadas e se reajusta quando as camadas são ativadas ou desativadas no mapa.
- Gráfico de atividade com feições por ano ou mês em ambos os eixos.
- Uma lista de camadas que mostra quais acompanham o controle deslizante, qual campo de data cada uma usa e por que uma camada foi ignorada.
- Modo de apresentação: um banner de data grande no mapa com reprodução, capítulos, uma grade de capítulos com miniaturas, destaque, desenho no mapa, tela em preto e branco, leitura em voz alta, uma janela do apresentador com anotações e relógio, atalhos de teclado, links para quiosque e um botão de velocidade. Os capítulos podem definir camadas, mapa-base, um local, um voo ou um corte, um pop-up de feição e um tempo de pausa. As cores, a fonte e um logotipo do banner são definidos no construtor.
- Capítulos de história criados em tempo de execução a partir da visualização atual ou gerados com base nos anos mais movimentados dos dados, com exportação para uma apresentação de slides na web, um vídeo WebM ou XML para o construtor.
- Configurações do construtor com um seletor de camadas lido do mapa (camadas de grupo como títulos), regras para camadas que o seletor não consegue detectar, conjuntos de anos para grupos de instantâneos anuais, seções de desempenho, apresentação e identidade visual, além de importação e exportação XML de toda a configuração.
- Guia de ajuda dentro do widget, dica na primeira execução, acessibilidade pelo teclado e avisos para leitores de tela em todo o widget.
Requisitos
- Experience Builder Developer Edition 1.19 ou posterior, React 19. Testado na versão 1.21 com Maps SDK 5.x.
- Sem dependências de terceiros. Tudo vem do Experience Builder.
Instalação
- Baixe o arquivo ZIP da versão mais recente no GitHub (também anexado aqui).
- Copie a pasta
time-machine para client\your-extensions\widgets\ para que manifest.json fique diretamente dentro de widgets\time-machine\. Não a coloque dentro de outra pasta com o mesmo nome. - Execute
pnpm install (versão 1.21 ou posterior) ou npm install (versão 1.20 ou anterior) na pasta client e reinicie o cliente. - Adicione o Time Machine a uma experiência e selecione o widget de mapa que ele controlará.
O arquivo ZIP contém apenas o widget. Os shims do editor do Visual Studio no repositório foram deixados de fora de propósito, pois as declarações de módulo globais deles afetariam todos os outros widgets da sua pasta your-extensions. Se você clonar o repositório, em vez disso, exclua esses arquivos antes de compilar; o README os lista.
Limitações conhecidas
- As camadas de mosaico e as imagens são controladas apenas por meio de conjuntos de anos (camadas de grupo cujos elementos filhos são nomeados por ano).
- Um serviço de mapa desenha uma imagem por alteração; portanto, em um serviço lento, a Reprodução mostra menos imagens do que etapas. A data mantém o ritmo, e o mapa mostra a data mais recente que consegue carregar.
- O modo do lado do cliente lê até o limite de feições por camada definido no construtor (50.000 por padrão). Camadas maiores usam estatísticas do servidor para determinar o intervalo.
- A leitura em voz alta usa as vozes do navegador e exige um clique na página primeiro. A exportação de vídeo é em WebM.
Comentários
Sugestões de problemas e pull requests são bem-vindas no GitHub. Se uma camada for ignorada ou o intervalo parecer incorreto, a lista de camadas do widget informa o motivo, e o console do navegador mostra uma linha começando com [time-machine] que explica o restante.
Registro de alterações
12/10/2026: O widget agora acompanha o idioma do aplicativo (?locale=, o seletor de idiomas, o perfil do ArcGIS ou o navegador) em 39 idiomas, incluindo o guia de ajuda.
- Esri em primeiro lugar. Ela lê as traduções já existentes na sua instalação do Experience Builder; assim, uma frase como “Zoom to” usa a mesma tradução dos próprios widgets da Esri.
- Termos padronizados. Nomes de unidades, como pés e acres, vêm do Unicode CLDR, os mesmos dados usados pelos navegadores.
- Memória de tradução compartilhada. O restante vem de um dicionário compartilhado criado com o LibreTranslate, um tradutor de código aberto, além dos modelos Opus-MT do Helsinki-NLP para bósnio, croata e sérvio. Ele funciona gratuitamente no GitHub, então você não precisa de uma chave de API nem de uma conta.
- Integração. Ela também encontra textos em inglês codificados fora do arquivo de tradução do widget, como uma configuração padrão ou um guia de ajuda, e os conecta para que também sejam traduzidos.
As correções feitas à mão sempre prevalecem sobre as traduções automáticas e nunca são sobrescritas. Algumas traduções são geradas por máquina; se você notar alguma inadequada, responda aqui com uma sugestão melhor.
25/09/26: 1.0.0. Primeiro lançamento público, no GitHub, com arquivo ZIP.