Quickstart
To follow this example from scratch, in Android Studio create a new "Empty Views Activity" and then select "Kotlin" as the language. Select "Groovy DSL" as the build configuration language.
If you have an older project, you'll need to add bintray Maven repositories to your project-level Gradle file (usually
<project>/<app-module>/build.gradle
). AddmavenCentral()
to where repositories are already defined in that file, something like this:gradleallprojects { repositories { ... mavenCentral() } }
A newly-created app will likely already have
mavenCentral()
in a top-levelsettings.gradle
file, and you won't need to add it.Add the library as a dependency into your module Gradle file (usually
<project>/<app-module>/build.gradle
). Replace<version>
with the latest MapMetrics Android version (e.g.:org.mapmetrics.android-sdk:1.0.2
):gradledependencies { ... implementation 'org.mapmetrics.android-sdk:<version>' }
Sync your Android project with Gradle files.
Add a
MapView
to your layout XML file (usually<project>/<app-module>/src/main/res/layout/activity_main.xml
).xml... <org.maplibre.android.maps.MapView android:id="@+id/mapView" android:layout_width="match_parent" android:layout_height="match_parent" /> ...
Initialize the
MapView
in yourMainActivity
file by following the example below. If modifying a newly-created "Empty Views Activity" example, it replaces all the Kotlin code after the "package" line.kotlinclass SimpleMapActivity : AppCompatActivity() { // Declare a variable for MapView private lateinit var mapView: MapView private lateinit var mapView: MapView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) onBackPressedDispatcher.addCallback(this, object: OnBackPressedCallback(true) { override fun handleOnBackPressed() { // activity uses singleInstance for testing purposes // code below provides a default navigation when using the app NavUtils.navigateHome(this@SimpleMapActivity) } }) setContentView(R.layout.activity_map_simple) mapView = findViewById(R.id.mapView) mapView.onCreate(savedInstanceState) mapView.getMapAsync { val key = ApiKeyUtils.getApiKey(applicationContext) if (key == null || key == "YOUR_API_KEY_GOES_HERE") { it.setStyle( Style.Builder().fromUri(fileName) ) } else { val styles = Style.getPredefinedStyles() if (styles.isNotEmpty()) { val styleUrl = styles[0].url it.setStyle(Style.Builder().fromUri(styleUrl)) } } } } override fun onStart() { super.onStart() mapView.onStart() } override fun onResume() { super.onResume() mapView.onResume() } override fun onPause() { super.onPause() mapView.onPause() } override fun onStop() { super.onStop() mapView.onStop() } override fun onLowMemory() { super.onLowMemory() mapView.onLowMemory() } override fun onDestroy() { super.onDestroy() mapView.onDestroy() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) mapView.onSaveInstanceState(outState) } }
Build and run the app. If you run the app successfully, a map will be displayed.