This program allows you to visualize GPS tracks on an interactive map of the world. GPS tracks can be loaded from local GPX or GeoJSON files, or fetched via the Strava API. It is written in Rust.
Basic usage, to display a background map only (see the configuration below):
$ cargo run --release -- \
--cache-directory cache/ \
--map-config map-provider.json \
--lazy-ui-refreshLoading tracks from local GPX files:
$ cargo run --release -- \
--cache-directory cache/ \
--map-config map-provider.json \
--lazy-ui-refresh \
gpx \
--file track1.gpx,track2.gpxLoading tracks from local GeoJSON files:
$ cargo run --release -- \
--cache-directory cache/ \
--map-config map-provider.json \
--lazy-ui-refresh \
geojson \
--file track1.geojson,track2.geojsonLoading tracks from Strava activities (see the configuration below):
$ cargo run --release -- \
--cache-directory cache/ \
--map-config map-provider.json \
--lazy-ui-refresh \
strava \
--strava-config strava-config.jsonAdvanced usage:
$ cargo run --release -- \
--cache-directory cache/ \
--map-config map-provider.json \
--lazy-ui-refresh \
--speculative-tile-load \
--background-ui-thread \
--parallel-requests 10 \
--max-pixels-per-tile 512 \
--max-tile-level 15 \
strava \
--strava-config strava-config.json \
--port 8080 \
--activities-per-page 50 \
--activity-pages 12 \
--activity-count 500 \
--activity-types ride,hike,swimTo display the background map, you need to specify a tiled map provider, that must serve PNG tiles of the world via HTTP addresses of the format https://{server}/{z}/{x}/{y}.{extension}.
Here is an example of map-provider.json file that you pass to the --map-config parameter.
{
"server": "example.com/tiles",
"cache_folder": "local/cache/sub/folder",
"extension": "@2x.png",
"referer": "https://example.com/",
"user_agent": "User agent",
}- The
serveris the address of the HTTPS tile server, including any sub-folder. It will be prefixed byhttps://. - The
cache_folderis a sub-folder of the--cache-directoryon your disk where tiles for this provider will be cached. - The
extensionis a suffix to append to each HTTP query, typicallypng. Depending on the provider, you can also use it to request larger tiles (via@2x), or pass an access token. - The
refereris an optional value to put in the Referer HTTP header on requests to this tile server. - The
user_agentis an optional value to put in the User-Agent HTTP header on requests to this tile server.
For now, only tiles in PNG format are supported.
To automatically fetch GPS tracks from your recent Strava activities, please follow these steps.
First, you need to create a Strava application via your account, following the getting started guide.
From there, copy the client_id and client_secret given to you by Strava, and paste them into a strava-config.json file.
{
"client_id": "<your client id>",
"client_secret": "<your client secret>",
}You can then direct Ridemap to use these API credentials via the --strava-config parameters.
$ ridemap ... strava --strava-config strava-config.jsonWhen running this, Ridemap will print a URL in the terminal output, that you have to click to authenticate a OAuth token to your app for your account and fetch your rides.
Please visit: https://www.strava.com/oauth/authorize?client_id=<client_id>&redirect_uri=http%3A%2F%2F127.0.0.1%3A8080&response_type=code&approval_prompt=auto&scope=read,activity:read_all
Once you click the link and authorize Ridemap, activities will start being fetched and displayed on the map.
Various parameters allow to filter which activities to display, you can list these parameters via the CLI help.
$ ridemap strava --helpThe FONT_PATH variable in src/config.rs needs to point to a valid font file on your system.
The hard-coded value is a good default on Linux systems.
MIT