Please first read OpenStreetMap policy: https://operations.osmfoundation.org/policies/tiles/
Composable UI component for Desktop, Android and Browser
In local.properties, add keys:
sdk.dir=Path to Android SDK
MapView(
modifier = Modifier.fillMaxSize(),
latitude = 60.00,
longitude = 29.75,
startScale = 500.0,
onMapViewClick = { latitude, longitude ->
println("Hello, Geo coordinates, (lat $latitude, lon $longitude)")
true
}
)
./gradlew sample-desktop:run
./gradlew sample-android:installDebug #(connect device first)
./gradlew sample-browser:jsBrowserRun
Проект разбит на несколько includeBuild, чтобы нормально проходил импорт в Idea. Состоит из следующих подпроектов:
Тут лежит мультиплатформенный MapView с общей логикой инициализации.
Общий UI код между Android и Desktop. Всё максимально вынесено в commonMain sourceSet
MapViewAndroidDesktop.kt - отрисовка на Canvas и обработка pointer ввода.
MapViewBrowser.kt - отрисовка в html <canvas>
Общий код между Android и Desktop для запросов в сеть и кэширования на диск.
Для простоты этот модуль подключен как plugins { kotlin("jvm") }
Мультиплатформенная логика.
В этом модуле нет зависимости на Compose и в будующем можно переиспользовать для iOS (например в SwiftUI)
Мультиплатформенная картинка TileImage.
Содержит конфиги для настройки и отладки
Чтобы хорошо работала отладка в Idea - все тесты находятся в этом модуле в commonTest и jvmTest sourceSet-ах
sample-android, sample-browser, sample-desktop - приложения, которые можно запустить