
SDK enables integration of Yandex MapKit into projects, offering features like map rendering and image resources. Supports compose and moko frameworks for enhanced customization.
Kotlin-first SDK for Yandex MapKit. Its API is similar to the Yandex MapKit SDK but also supports multiplatform projects and Compose Multiplatform, enabling you to use MapKit directly from your common source targeting iOS or Android.
NOTE: It is not Yandex's project. Author has no connection with original SDK, it is wrapper above official Yandex MapKit SDK
The following libraries are available. It uses Yandex MapKit SDK version 4.42.0-lite
| Module | Gradle Dependency | Description |
|---|---|---|
| Core | ru.sulgik.mapkit:yandex-mapkit-kmp:1.0.0-beta01 |
Features of original Yandex MapKit SDK |
| Compose | ru.sulgik.mapkit:yandex-mapkit-kmp-compose:1.0.0-beta01 |
Component to draw map and compose-resources usage as map images |
| Moko | ru.sulgik.mapkit:yandex-mapkit-kmp-moko:1.0.0-beta01 |
Use moko-resources as map images. Requires native initialization |
| Moko Compose | ru.sulgik.mapkit:yandex-mapkit-kmp-moko-compose:1.0.0-beta01 |
Use moko-resources as image provider. Not require native initialization |
The minimum supported Android SDK is 26 (Android 8.0).
Supported iOS targets are iosArm64 and iosSimulatorArm64. The iosX64 target was dropped
because Compose Multiplatform no longer publishes for it.
All modules are available for use in common code, but native API available only in native code.
On iOS the official Yandex MapKit SDK is not linked as a transitive dependency. Therefore, any project using this SDK needs to link the same Yandex MapKit SDK as well. This can be done through your preferred installation method (CocoaPods/SPM).
kotlin {
cocoapods {
pod("YandexMapsMobile") {
version = "<mapkit-version>"
}
}
sourceSets {
commonMain.dependencies {
implementation("ru.sulgik.mapkit:yandex-mapkit-kmp:<version>") // main module
implementation("ru.sulgik.mapkit:yandex-mapkit-kmp-compose:<version>") // optional compose support
implementation("ru.sulgik.mapkit:yandex-mapkit-kmp-moko:<version>") // optional: moko support
implementation("ru.sulgik.mapkit:yandex-mapkit-kmp-moko-compose:<version>") // optional: moko compose resources support
}
}
}Within 1.x the modules guarantee source compatibility, not binary compatibility.
The wrapper follows MapKit, and MapKit adds fields to its structures and constants to its enums in
minor releases. Those structures are data classes here, so a new field changes componentN and
copy$default, and a new enum constant makes an exhaustive when over it stop compiling. Both are
binary-breaking, and refusing them would mean freezing the wrapper on one MapKit version.
So: recompile against the version you depend on, do not mix wrapper versions in a single dependency
graph, and expect a when over a wrapper enum to need a new branch after an update. Renames,
removals and signature changes are reserved for a major release.
Full documentation is at ymk-kmp.sulgik.ru, in English and Russian, with the KDoc under /kdoc.
Kotlin-first SDK for Yandex MapKit. Its API is similar to the Yandex MapKit SDK but also supports multiplatform projects and Compose Multiplatform, enabling you to use MapKit directly from your common source targeting iOS or Android.
NOTE: It is not Yandex's project. Author has no connection with original SDK, it is wrapper above official Yandex MapKit SDK
The following libraries are available. It uses Yandex MapKit SDK version 4.42.0-lite
| Module | Gradle Dependency | Description |
|---|---|---|
| Core | ru.sulgik.mapkit:yandex-mapkit-kmp:1.0.0-beta01 |
Features of original Yandex MapKit SDK |
| Compose | ru.sulgik.mapkit:yandex-mapkit-kmp-compose:1.0.0-beta01 |
Component to draw map and compose-resources usage as map images |
| Moko | ru.sulgik.mapkit:yandex-mapkit-kmp-moko:1.0.0-beta01 |
Use moko-resources as map images. Requires native initialization |
| Moko Compose | ru.sulgik.mapkit:yandex-mapkit-kmp-moko-compose:1.0.0-beta01 |
Use moko-resources as image provider. Not require native initialization |
The minimum supported Android SDK is 26 (Android 8.0).
Supported iOS targets are iosArm64 and iosSimulatorArm64. The iosX64 target was dropped
because Compose Multiplatform no longer publishes for it.
All modules are available for use in common code, but native API available only in native code.
On iOS the official Yandex MapKit SDK is not linked as a transitive dependency. Therefore, any project using this SDK needs to link the same Yandex MapKit SDK as well. This can be done through your preferred installation method (CocoaPods/SPM).
kotlin {
cocoapods {
pod("YandexMapsMobile") {
version = "<mapkit-version>"
}
}
sourceSets {
commonMain.dependencies {
implementation("ru.sulgik.mapkit:yandex-mapkit-kmp:<version>") // main module
implementation("ru.sulgik.mapkit:yandex-mapkit-kmp-compose:<version>") // optional compose support
implementation("ru.sulgik.mapkit:yandex-mapkit-kmp-moko:<version>") // optional: moko support
implementation("ru.sulgik.mapkit:yandex-mapkit-kmp-moko-compose:<version>") // optional: moko compose resources support
}
}
}Within 1.x the modules guarantee source compatibility, not binary compatibility.
The wrapper follows MapKit, and MapKit adds fields to its structures and constants to its enums in
minor releases. Those structures are data classes here, so a new field changes componentN and
copy$default, and a new enum constant makes an exhaustive when over it stop compiling. Both are
binary-breaking, and refusing them would mean freezing the wrapper on one MapKit version.
So: recompile against the version you depend on, do not mix wrapper versions in a single dependency
graph, and expect a when over a wrapper enum to need a new branch after an update. Renames,
removals and signature changes are reserved for a major release.
Full documentation is at ymk-kmp.sulgik.ru, in English and Russian, with the KDoc under /kdoc.