Use Leaflet's requestAnimationFrame instead of setTimeout