Skip to content

Consider a Google Maps alternative #6285

Description

@axeluhl

Google Maps has worked great and still works great. In the past we had discussions about wind-up display and needed to work around a lack of vector-based maps. Since vector-based Google Maps support we have a native wind-up implementation, only it cannot handle satellite view while rotated.

There are two issues with using the Google Maps API:

  • Google logo: this may be an issue for some usage scenarios, such as for Olympic Summer Games when showing any branding is not an option, especially for non-sponsors (as reported, e.g., by @radek-masnica)
  • need for an API key and usage limits with the free tier may make consumption for low-budget but high-visibility events a problem

As of this writing, we have already conducted a few steps towards a prototype that provides an alternative map implementation. The work has been massively supported by AI (in particular PiDev + GPT 5.6, as well as Claude Code + Opus 4.8) (thanks, @kohlermsap). It can be found on branch maplibre-runtime-loader and is based on the idea that we can provide a JavaScript adapter that makes the MapLibre API look and behave like the Google Maps API, thus fitting in nicely with our GWT wrapper we use for accessing the Google Maps JavaScript API from our GWT client application.

The prototype on the maplibre-runtime-loader branch activates the MapLibre map when the RaceBoard.html entry point is used with the "maps=maplibre" URL query parameter. This currently needs to be added manually to each such RaceBoard.html page load, which already points to one piece of remaining work.

Remaining work, as far as we see it so far:

  • make a single feature flag or maybe setting or user preference regarding map provider selection, so that map selection works without repeated manual user intervention or manual URL editing
  • clarify impact of https://openfreemap.org/ attribution requirements regarding de-branded usage scenarios
  • clarify open issues in the prototype's code (@kohlermsap), such as the new FixesAndTails.synchronizeTailPath(...) method and its usage

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions