Live vector cloud map based on live data provided by https://eumetsat.int
- Supports mouse (for Desktop: drag with left button to move, right button to pan, scroll to zoom) and touch gestures (simmilar to Google Maps for smartphones or tablets)
- Use browser's «back» and «forward» navigation buttons to browse camera movement history with smooth transition between previous locations
- Share your observation spots across your devices and with other people: just copy full URL of the current map's page to include your camera's position as initial spot. Example links for places:
- SOURCE_WIDTH -
4096(default)/2048/1024 - SOURCE_HEIGHT -
2048(default)/1024/512
If your desktop environment allows to use web page as a background (for example in KDE using HTML Wallpaper plugin), you can add query parameter ?wallpaper=1 to your URL to hide time controls and launch animation immediately. Example:
https://clouds.heymoon.cc/?wallpaper=1#132.16369401846373;0.282109199965177;3.9276030513952844;0;0;0
Following settings can be redefined via browser's localStorage for testing purposes:
- debug - write camera positions to dev console when changed
- Default:
false
- Default:
- style - overwrite style source URL
- Default:
/style
- Default:
- initial - overwrite initial position. Compatible with objects logged with debug flag.
- Example usage:
localStorage.setItem('initial', JSON.stringify({lng: 136.272, lat: -25.145, zoom: 3.3236095600755164, bearing: 0, pitch: 0, roll: 0, zoom: 3})) - Default:
{"lng":37.618423,"lat":55.751244,"zoom":3,"bearing":180,"pitch":60,"roll":0}
- Example usage:
- animationSpeed - interval between changes
- Default:
110
- Default:
- animationStart - delay before animation start. If time slider is left on the earliest value for more milliseconds than defined here, it will start to replay current day in the loop. Alternatively, animation will start from initial position after this period multiplied by 3
- Default:
5000
- Default:
node:25-alpine stage is known to produce invalid results in production mode for maplibre-js (as well as mapbox-js) when platform linux/amd64 is emulated using official Docker engine for Mac OS. It will complete without errors but resulting JS-bundle will be broken.
Use Linux or install Node 25 on your host and build static manually with make static (you'll need to modify Dockefile yourself for this workaround). Development build doesn't have this issue.

