Skip to content

maplibre/maplibre-navigation-android

Repository files navigation

MapLibre Navigation SDK for Android (and KMP)

The Maplibre Navigation SDK for Android is built on a fork of the Mapbox Navigation SDK v0.19 which is built on top of the Mapbox Directions API and contains the logic needed to get timed navigation instructions.

With this SDK you can implement turn-by-turn navigation in your own Android app while hosting your Map tiles and Directions API.

Note

We are currently active working on converting this pure Android library to a Kotlin Multiplatform library.

MapLibre Navigation Android

License

Why have we forked

  1. Mapbox decided to put a closed-source component to their navigation SDK and introduced a non-open-source license. Maplibre wants an open-source solution.
  2. Mapbox decided to put telemetry in their SDK. We couldn't turn this off without adjusting the source.
  3. We want to use the SDK without paying Mapbox for each MAU and without Mapbox API keys.

All issues are covered with this SDK.

What have we changed

  • We completely removed the UI part from the SDK so it will only contain the logic for navigation and not the visuals.
  • We upgraded the Mapbox Maps SDK for Android to MapLibre Native for Android version 9.4.0.
  • We upgraded the NavigationRoute with the possibility to add an interceptor to the request.
  • We changed the locationLayerPlugin to the location component
  • We updated the logic around the implementation of the locationEngine so it can be used with the new locationEngine from the Mapbox SDK.
  • We removed the telemetry class from the project. Nothing is being sent to Mapbox or Maplibre.

Getting Started

This library is available on Maven Central. To use it, add the following to your build.gradle:

Gradle

Step 2. Add the dependency

  // Core KMP library (without UI)
  implementation 'org.maplibre.navigation:navigation-core:5.0.0-pre1'

  // UI library (Android only)
  implementation 'org.maplibre.navigation:navigation-ui-android:5.0.0-pre1'

Getting Help

  • Have a bug to report? Open an issue. If possible, include the version of MapLibre Services, a full log, and a project that shows the issue.
  • Have a feature request? Open an issue. Tell us what the feature should do and why you want the feature.

Samples

Android

We have added an Android example app to this repo.

The Valhalla example is aready pre-configured. All other examples needs to be configured with your own tile and direction server. This URLs needs to be set in developer-config.xml, which is generated on first Gradle run.

Multiplatform

The new Kotlin Multiplatform library for iOS and Android has it's own small sample apps for all supported platforms.

Contributing

We welcome feedback, translations, and code contributions! Please see CONTRIBUTING.md for details.