demo-WA.mp4
An interactive globe showing ~26,000 animated maritime light sequences from OpenStreetMap, rendered with MapLibre GL JS v5.
It parses seamark:* tags from OSM data — including sequence, character, period, colour, and range — and animates them as coloured circles on a Canvas 2D overlay. Lights without an explicit sequence are synthesized from their character type and period.
If you think a lighthouse or beacon is missing, please add or edit it on OpenStreetMap.
The following seamark:light:* tags are used to determine light animations. Tags under the seamark:light:1:* namespace are also supported and normalized automatically.
| Tag | Purpose |
|---|---|
seamark:light:sequence |
Explicit on/off timing pattern, e.g. 1.5+(4),1.5+(13) |
seamark:light:character |
Light type: F, Fl, LFl, Oc, Iso, Q, VQ, UQ, IQ, IVQ, IUQ, Mo, Al.* |
seamark:light:period |
Total cycle duration in seconds — used with character to synthesize a sequence |
seamark:light:colour |
Light colour(s), semicolon-separated for multi-colour lights (e.g. white;red) |
seamark:light:group |
Number of flashes per group, or Morse letter for Mo characters |
seamark:light:range |
Nominal range in nautical miles — controls rendered circle size |
A job runs once a night to refresh the mega file that containes all of the data. If you discover that it hasn't updated in a while, please let me know!
Originally forked from an implemenation by Geodienst.