Установка¶
Все модули опубликованы в Maven Central в группе ru.sulgik.mapkit.
Собрано против Yandex MapKit SDK 4.42.0-lite
Обёртка нацелена на сборку lite. Сам MapKit подключает ваш проект, поэтому используйте там ту же версию.
| Модуль | Зависимость Gradle | Описание |
|---|---|---|
| Обёртка | ru.sulgik.mapkit:yandex-mapkit-kmp:1.0.0-beta01 |
API MapKit в общем коде |
| Compose | ru.sulgik.mapkit:yandex-mapkit-kmp-compose:1.0.0-beta01 |
Отрисовка карты через Compose Multiplatform и compose-resources как изображения карты |
| Moko | ru.sulgik.mapkit:yandex-mapkit-kmp-moko:1.0.0-beta01 |
moko-resources как ImageProvider. Требует инициализации на платформе |
| Moko Compose | ru.sulgik.mapkit:yandex-mapkit-kmp-moko-compose:1.0.0-beta01 |
То же в composable-контексте, без инициализации на платформе |
Требования¶
- Android — минимальный SDK 26.
- iOS —
iosArm64иiosSimulatorArm64.iosX64убран, потому что Compose Multiplatform больше под него не публикуется. - Kotlin 2.4.10, Compose Multiplatform 1.11.1 для Compose-модулей.
- API-ключ от Яндекса.
Подключение самого MapKit¶
MapKit не приходит транзитивно вместе с этими модулями — его подключаете вы, версией из таблицы выше.
Достаточно Gradle-зависимости; добавьте её в Android-исходники модуля, который линкует приложение.
kotlin {
sourceSets {
androidMain.dependencies {
implementation("com.yandex.android:maps.mobile:4.42.0-lite")
}
}
}
kotlin {
cocoapods {
pod("YandexMapsMobile") {
version = "4.42.0-lite"
}
}
}
Добавьте YandexMapsMobile в проект Xcode обычным способом и откройте его для Kotlin через
interop с SPM.
На iOS линковка на вашей стороне
Klib не может нести в себе нативный фреймворк, поэтому проект, который сам не линкует Yandex MapKit SDK, падает на линковке, а не на компиляции.
Основной модуль¶
yandex-mapkit-kmp — это обёртка: собственный API MapKit, доступный из commonMain. Сам он ничего
не рисует — как платформенный MapView попадает в общий код, описано в
Обзоре обёртки.
kotlin {
sourceSets {
commonMain.dependencies {
implementation("ru.sulgik.mapkit:yandex-mapkit-kmp:1.0.0-beta01")
}
}
}
Compose Multiplatform¶
yandex-mapkit-kmp-compose рисует карту как composable и управляет объектами карты через отдельную
композицию: YandexMap, Placemark, Polyline, Polygon, Circle, Clustering,
MapObjectCollection, TileLayer, MapObjectLayer, TrafficLayer, MapListeners,
CameraPositionState и MapEffect.
Обёртка уже внутри
Модуль зависит от yandex-mapkit-kmp как от api-зависимости, поэтому отдельное объявление
нужно только чтобы явно зафиксировать версию.
kotlin {
sourceSets {
commonMain.dependencies {
implementation("ru.sulgik.mapkit:yandex-mapkit-kmp-compose:1.0.0-beta01")
}
}
}
moko-resources¶
yandex-mapkit-kmp-moko превращает изображения, сгенерированные
moko-resources, в ImageProvider. Модуль добавляет
MOKOImageLoader с платформенными реализациями AndroidMOKOImageLoader (нужен Context) и
IOSMOKOImageLoader — их вы создаёте на стороне платформы и передаёте в общий код.
kotlin {
sourceSets {
commonMain.dependencies {
implementation("ru.sulgik.mapkit:yandex-mapkit-kmp-moko:1.0.0-beta01")
}
}
}
moko-resources в Compose¶
yandex-mapkit-kmp-moko-compose добавляет rememberMOKOImageLoader(), который сам собирает
платформенную реализацию, так что передавать ничего не нужно.
kotlin {
sourceSets {
commonMain.dependencies {
implementation("ru.sulgik.mapkit:yandex-mapkit-kmp-moko-compose:1.0.0-beta01")
}
}
}
Оба moko-модуля описаны на странице Изображения.