Skip to content

🚲⛰️ An open-source mobile cross-platform Bike Navigation System for iOS and Android, developed with Flutter and Dart.

License

Notifications You must be signed in to change notification settings

patrick-mahnkopf/bike-gps

Repository files navigation

Bike GPS header

Bike GPS

contributors forks stars license issues Quality Gate Status

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. Bike GPS Search View

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.

image

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.

Alternative Tours

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.

Road book

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

git clone https://github.com/patrick-mahnkopf/bike-gps.git
  • Download the dependency packages with:
flutter pub get

Tile server prerequisites

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/tokens directory. 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.txt containing the URI of the tile server endpoint holding the vector style.json
    • A raster_style_string.txt containing the URI of the raster style JSON pointing to the tile server's raster endpoint
    • A mapbox_access_token.txt containing your private Mapbox access token to allow Flutter Mapbox GL to download the underlying Android/iOS SDKs
    • A route_service_url.txt containing the URI of the route server endpoint. Use the /ors/v2/directions/cycling-mountain/gpx endpoint when running Openrouteservice
    • A route_service_status_url.txt containing the URI of the route server's status endpoint. Use the /ors/v2/health endpoint when running Openrouteservice
    • A log_server_values.txt containing the URI of a log server endpoint, the username, and the password for that server, each in a separate line