Alla fordon på kartan animeras mellan positionsuppdateringar för att ge en känsla av flyt. Tidigare användes en ease-out cubic-kurva: fordonen startade snabbt och bromsade in mot slutet av varje cykel. Det lät bra i teorin, men skapade ett problem.
Datadriven analys
Genom att analysera 60 på varandra följande API-svar kunde jag mäta hur ofta varje fordonstyp uppdaterar sin position:
- Bussar — var 2:a sekund, ~16 meters förflyttning
- Tunnelbana — var 6:e sekund, ~80 meters förflyttning
- Båtar — var 6:e sekund, ~12 meters förflyttning
- Pendeltåg — var 11:e sekund, ~650 meters förflyttning
Med ease-out cubic tillbringade fordonen de sista 50% av varje animationscykel med att knappt röra sig — de såg ut att "krypa". Med 2 sekunders uppdateringsintervall betydde det en hel sekund av nästan-stillastående per cykel.
Linjär interpolering
Genom att byta till linjär interpolering rör sig fordonen med jämn hastighet under hela animationscykeln. Resultatet mätt med ett Puppeteer-baserat testverktyg som spårar markörrörelser pixelvis:
- Synlig rörelse: 85% → 97%
- "Krypande" tid: 15% → 3%
- Jämnhet: +8 procentenheter bättre
Båtprediktion
Båtar uppdaterar sin position bara var 6:e sekund, men kartan känner till deras hastighet och kurs. Genom att extrapolera positionen 3 sekunder framåt fyller kartan gapet och båtarna glider naturligt även mellan uppdateringar.