
Bike GPS
Bike GPS is an Open-Source Mobile Cross-Platform Bike Navigation System for iOS and Android, developed using Dart and Flutter.
It is powered by OpenStreetMap, Flutter Mapbox GL, OpenMapTiles, and Openrouteservice.
Functionality
Maps
The app uses OpenStreetMap data served from a tile server to display its map.
Address Search
The app includes a search interface that will find addresses, places, and tours available on the device.
Navigation
The app includes functionality to navigate using tour files, as well as to the tours on-the-fly with routing based on the OSM map data.

GPX
The app includes a parser for .gpx files and is specifically made to allow for easy addition of further parsers for other file types.
Tour Enhancement
The app will automatically generate navigation and turn information for the free navigation and for tour files that do not include such data.
Alternative Tours
Upon selecting a tour, the app will automatically display alternative tours, which can be switched to by simply tapping them on the map.

Road book
The road book features height information for all tours, as well as surface information for all parts of the tour for tour files including that data. The road book also displays all turns of the tour, with a description of the location and a textual explanation of the turn.

Mobile Intent Handling
The app supports "Open with..." and "Share" functionality on mobile devices for tour files, as well as zip collections of tour files.
Development Setup
Flutter Prerequisites
-
Install the Flutter SDK version 2.0.0 from the stable channel
-
See the official Flutter documentation for setup guidance
-
Clone the repository:
git clone https://github.com/patrick-mahnkopf/bike-gps.git
- Download the dependency packages with:
flutter pub get
Tile server prerequisites
- This project uses Flutter Mapbox GL, so the tiles have to be served either by mapbox, or by setting up a service such as OpenMapTiles on a server
- You can use something like OSM Bright as a starting point for the maps
Route server prerequisites
- For the free navigation and tour enhancement features a route server has to be set up. You can use Openrouteservice for that
Tokens, style and API URI setup
- A few tokens are expected in separate files in the
./assets/tokensdirectory. Make sure that the folder stays listed in the .gitignore to prevent uploading any sensitive data - You will need the following:
- A
vector_style_string.txtcontaining the URI of the tile server endpoint holding the vectorstyle.json - A
raster_style_string.txtcontaining the URI of the raster style JSON pointing to the tile server's raster endpoint - A
mapbox_access_token.txtcontaining your private Mapbox access token to allow Flutter Mapbox GL to download the underlying Android/iOS SDKs - A
route_service_url.txtcontaining the URI of the route server endpoint. Use the/ors/v2/directions/cycling-mountain/gpxendpoint when running Openrouteservice - A
route_service_status_url.txtcontaining the URI of the route server's status endpoint. Use the/ors/v2/healthendpoint when running Openrouteservice - A
log_server_values.txtcontaining the URI of a log server endpoint, the username, and the password for that server, each in a separate line
- A