Overzicht
GitHub:
https://github.com/brianmcleer/time-machine-widget
Time Machine is een aangepaste widget voor ArcGIS Experience Builder Developer Edition 1.19 en later (getest op 1.21). Het plaatst één datumschuifregelaar op de kaart en laat elke gelaagde laag met datum deze volgen. Sleep naar een datum en de kaart toont wat er op die datum was.
Het heeft geen tijd-geactiveerde services nodig. De widget leest de velden van elke laag, kiest het datumveld en past een filter toe bovenop het filter dat de laag al heeft. Feature-lagen worden gefilterd in de laagweergave in de browser. Kaartafbeeldingslagen met gedateerde sublagen worden gefilterd met een definitie-expressie en vragen na elke wijziging om een nieuwe afbeelding.
We hebben het gebouwd voor onze annexatiegeschiedenis, die teruggaat tot 1882 en leeft in een kaartservice met één sublaag per jaar of decennium. Het werkt ook op een enkele feature-laag met één datumveld.
(Excuses voor screenshot, de nieuwe Esri Community accepteert geen videobestanden)
Wat het doet
- Vanaf nu, Bereik- en Vergelijkingsmodi. Vergelijken toont twee datums naast elkaar achter een scheidingslijn die je kunt slepen.
- Stap per dag, maand of jaar, of elke N daarvan vanuit een Geavanceerde optie. Speel met snelheid, lus, Reset en Vandaag, plus Vorige wijziging en Volgende wijziging om te springen tussen datums waar iets gebeurde.
- Het schuifbereik komt uit de data: het past bij de oudste en nieuwste datums van de lagen die aan staan en past zich opnieuw aan wanneer lagen aan of uit worden gezet in de kaart.
- Activiteitendiagram met features per jaar of maand op beide assen.
- Een lagenlijst die toont welke lagen de schuifregelaar volgen, welk datumveld elke gebruikt, en waarom een laag is overgeslagen.
- Presentatiemodus: een groot datumbanner op de kaart met afspelen, hoofdstukken, een hoofdstukkengrid met miniaturen, een spotlight, tekenen op de kaart, zwart-wit scherm, voorlezen, een presentatorvenster met notities en een klok, sneltoetsen, kiosklinks en een snelheidsknop. Hoofdstukken kunnen lagen, basiskaart, een plaats, een vlucht of een knip instellen, een feature-popup en een wachttijd. Kleuren, lettertype en logo voor het banner worden ingesteld in de builder.
- Verhaalhoofdstukken gemaakt tijdens runtime vanuit de huidige weergave, of gegenereerd uit de drukste jaren in de data, met export naar een webdiavoorstelling, een WebM-video of XML voor de builder.
- Builder-instellingen met een lagenkiezer gelezen van de kaart (groepslagen als koppen), regels voor lagen die de kiezer niet kan zien, jaargroepen voor groepen jaarlijkse snapshots, prestaties, presentatie- en brandingsecties, en XML-import en -export van de hele configuratie.
- In-widget hulpgids, hint bij eerste gebruik, toetsenbordtoegang en schermlezer-aankondigingen doorheen.
Vereisten
- Experience Builder Developer Edition 1.19 of later, React 19. Getest op 1.21 met Maps SDK 5.x.
- Geen afhankelijkheden van derden. Alles komt van Experience Builder.
Installeren
- Download het zipbestand van de laatste GitHub-release (ook hier bijgevoegd).
- Kopieer de
time-machine map naar client\your-extensions\widgets\ zodat manifest.json direct binnen widgets\time-machine\ staat. Niet dieper dan één niveau nestelen. - Voer
pnpm install (1.21 en later) of npm install (1.20 en eerder) uit in de client map en herstart de client. - Voeg Time Machine toe aan een experience en selecteer de kaartwidget die het aanstuurt.
De zip bevat alleen de widget. De Visual Studio editor shims in het repository zijn bewust weggelaten omdat hun ambient module declaraties elke andere widget in je your-extensions map zouden beïnvloeden. Als je het repository kloont, verwijder dan die bestanden voordat je bouwt; ze staan vermeld in de README.
Bekende beperkingen
- Tegel-lagen en afbeeldingen worden alleen aangestuurd via jaargroepen (groepslagen waarvan kinderen per jaar zijn genoemd).
- Een kaartservice tekent één afbeelding per wijziging, dus bij een trage service toont Afspelen minder afbeeldingen dan stappen. De datum houdt zijn tempo aan en de kaart toont zo nieuw mogelijk datum.
- Client-side modus leest tot een builder limiet van features per laag (standaard 50.000). Grotere lagen gebruiken serverstatistieken voor het bereik.
- Voorlezen gebruikt stemmen van de browser en vereist eerst één klik op de pagina. Video-export is WebM.
Feedback
Issues en pull requests zijn welkom op GitHub. Als een laag wordt overgeslagen of het bereik verkeerd lijkt, zegt de lagenlijst in de widget waarom, en heeft de browserconsole een regel beginnend met [time-machine] die verdere informatie geeft.
Wijzigingslogboek
- 25 september 2026: 1.0.0. Eerste publieke release, op GitHub met release-zip.