>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Kotlin

Hoe je je Google locatiegeschiedenis omzet in vloeiende routevideo's

Onlangs stuitte ik op een interessant repository: google-timeline-visualizer. Het project neemt ruwe locatiegeschiedenis-exports van Google Maps (Timeline.json) en zet ze om in een geanimeerde MP4-video met een kaart van je trips voor de geselecteerde periode.

Videos library

Een paar jaar geleden begon Google locatiegeschiedenis geleidelijk te verplaatsen van de cloud naar de apparaten van gebruikers. Nu staat deze data lokaal in logge JSON-bestanden met een complexe structuur van coördinaten, segmenten en activiteitsmarkers. De projectauteur schreef eerst een Python-script voor persoonlijk gebruik, en portte de logica vervolgens naar een native Kotlin-app voor Android en een webversie voor iOS.

New video

Wat de tool kan doen

Het hoofddoel van de tool is simpel: droge locatiepunten omzetten in een prettige animatie waar je niet voor hoeft te schamen om op social media te posten of als herinnering aan je vakantie te bewaren.

Hier zijn enkele interessante oplossingen:

  • GPS-ruisfiltering. Als je telefoon de satellietverbinding een seconde verliest en je naar het naburige stadje stuurt, knipt het algoritme zulke scherpe heen-en-weer sprongen eruit en breekt het niet de totale routelijn.
  • Vluchtinterpolatie. Lange intercontinentale vluchten worden gladgestreken langs een great circle boog. De camera vliegt soepel langs de geodetische lijn en volgt de marker, in plaats van te teleporteren van punt A naar punt B.
  • Vloeiende cameratracking. Tijdens dagelijkse stadsritten kan de marker iets ronddwalen binnen een vast schermgebied, en pas daarna begint de kaart er soepel achter te bewegen. Dit elimineert onaangename schokkerigheid bij verkeerslichten en in filedrukte.
  • Flexibele renderinstellingen. Je kunt de duur instellen van 10 tot 300 seconden, kiezen voor verticaal formaat 1080×1920 voor mobiele stories of klassiek horizontaal 1080p.

Hoe te draaien op desktop

Initiëel evolueerde het project als een Python-script dat FFmpeg gebruikte voor het samenvoegen van tegels en frames. De desktopversie werkt nog steeds.

Je hebt Python 3.9+ en FFmpeg op je systeem nodig:

python -m pip install -r requirements.txt
python visualizer.py --input Timeline.json --year 2025 --camera-movement steady \
  --long-trip-compression balanced --output my_trip_2025.mp4

Het script ondersteunt verschillende coördinaatformaten: standaard arrays, semanticSegments structuur, E7 coördinaten en strings met prefixes geo:.

Mobiele clients en webversie

Als je niet wilt rommelen met de terminal, zijn er twee kant-en-klare opties:

  1. Android. Een kant-en-klare APK is beschikbaar in de repository releases. De app is geschreven in Kotlin, rendert video direct op de processor van de telefoon en slaat afgewerkte clips op in de systeemmap Movies.
  2. iPhone. Werkt via een webinterface in Safari. De hardware H.264 encoder in de browser wordt gebruikt voor encoding.

Om het Android-project vanaf nul te bouwen, heb je JDK 17 en Android SDK 36 nodig:

./gradlew test lint assembleGithubDebug assemblePlayDebug
python -m pip install -r requirements-dev.txt
python -m pytest

Privacyoverwegingen

Locatiedata is gevoelig, dus de auteur maakte rendering strikt lokaal. Er is geen Google-accountautorisatie of het verzenden van JSON naar servers van derden.

De enige netwerkinteractie is het laden van raster-maptiles van de CARTO-service gebaseerd op OpenStreetMap. Voordat de eerste kaart wordt geladen, waarschuwt de app direct voor deze netwerkverzoeken.

Voor wie is het nuttig

Het project zal interessant zijn voor degenen die graag het jaar afsluiten en hun trips visualiseren. De broncode is ook de moeite waard voor mobiele ontwikkelaars: de codebase demonstreert duidelijk hoe je tile map en video stream rendering organiseert zonder zware externe libraries.

Gerelateerde projecten