Home

Awesome

<h1 align="center"> <br> <img src="https://github.com/maplibre/maplibre-plugins-android/blob/main/.github/mlb-plugins-logo.png" alt="MapLibre Plugins" width="500"> </h1> <h4 align="center">Plugins are single-purpose libraries built on top of the <a href="https://maplibre.org/maplibre-gl-native/android/api/">MapLibre Maps SDK for Android</a> that you can include in your apps like any other Android dependency</h4> <p align="center"> <a href="https://github.com/maplibre/maplibre-plugins-android/actions/workflows/ci.yml"><img src="https://github.com/maplibre/maplibre-plugins-android/actions/workflows/ci.yml/badge.svg" /></a>&nbsp;<a href="https://github.com/maplibre/maplibre-plugins-android/actions/workflows/release.yml"><img src="https://github.com/maplibre/maplibre-plugins-android/actions/workflows/release.yml/badge.svg" /></a> </p> <br>

MapLibre Plugins for Android

Plugins are single-purpose libraries built on top of the MapLibre Native Android that you can include in your apps like any other Android dependency. A full list of the current plugins is available below.

We are looking for maintainers for these plugins! Please reach out to the Maplibre team and take a look at the contribution guide.

Available Plugins

Installing a plugin

By using a plugin, you also have to include the MapLibre GL Native for Android which means that you'll need to setup your project to use the Maps SDK if you haven't already. Head over to the overview page for the Maps SDK to learn more.

Note that depending on the plugin you add, there might be required permissions and additional setup steps. You'll find more information on whether or not more configuration steps are involved when looking at the specific plugin documentation.

  1. Start Android Studio
  2. Open up your application's build.gradle
  3. Make sure that your project's minSdkVersion is at API 14 or higher
  4. Under dependencies, add a new build rule for the latest plugin version you are trying to use.
repositories {
  mavenCentral()
}

dependencies {
  implementation 'org.maplibre.gl:android-{PLUGIN_NAME}-v{MAJOR_MAPS_SDK_VERSION_NUMBER}:PLUGIN_VERSION_NUMBER'
}

Plugin artifacts are versioned based on the major release of the Maps SDK for Android, which means, that each artifact's name has a major version of the Maps SDK it's compatible with appended.

  1. Click the Sync Project with Gradle Files near the toolbar in Studio.

Maps SDK compatibility

The MapLibre Plugins for Android are heavily dependent on the major semantic versioning number of the Maps SDK. They either won't compile or hide runtime bugs when paired with a different major version of the Maps SDK. Each plugin's dependency name has a vX suffix which states the major version of the Maps SDK that the plugin is compatible with. This suffix makes the transition between versions easier and more educated without the need to jump into changelogs and compare repositories.

Help and Usage

A plugin is simply a library module built on top of the MapLibre Maps SDK for Android. Plugins can be easy to use. Currently, we are not requiring plugins to register themselves or to implement any specific interfaces so that they're simple to consume.

Test app

This repository includes an app with examples showing how you can use each plugin.

This might change in the future as we build more plugins and learn how you use them. We'd love to hear your feedback.

Why Plugins?

Splitting specific functionality into plugins makes our Maps SDK lighter and nimble for you to use, and it also lets us iterate faster. We can release plugins more often than the SDK, which requires a slower pace due to its larger codebase.

The MapLibre Android team creates plugins but this plugins repository is an open-source project similar to the various MapLibre SDKs for Android. Plugins' lightweight nature makes them much easier for you and anyone else to contribute rather than trying to add the same feature to the more robust Maps SDK. The MapLibre team can also more easily accept contributed plugins and keep the plugin list growing.

Contributing

We welcome contributions to this plugin repository!

If you're interested in building and sharing your own plugin, please read the contribution guide to learn how to get started.