Jetpack Compose – это декларативный нативный набор инструментов, который позволяет легко и быстро создавать пользовательские интерфейсы. Вам нужно описать, как должно выглядеть приложение, а Jetpack Compose сделает все остальное.
Библиотека Maps Compose для Maps SDK для Android – это набор компонуемых функций и типов данных с открытым исходным кодом, которые можно использовать вместе с Jetpack Compose для создания приложений.
Библиотека Maps Compose содержит компонуемые функции и типы данных, позволяющие выполнять множество типичных задач. Некоторые из этих функций и типов данных представлены в таблице ниже.
Функция | Описание |
---|---|
Circle | Компонуемая функция, добавляющая на карту круг. |
GoogleMap | Компонуемая функция, добавляющая карту. |
GroundOverlay | Компонуемая функция, добавляющая на карту наземное наложение. |
MapProperties | Тип данных для изменяемых свойств карты. |
MapUISettings | Тип данных для настроек карты, связанных с пользовательским интерфейсом. |
Marker | Компонуемая функция, добавляющая на карту маркер. |
Polygon | Компонуемая функция, добавляющая на карту многоугольник. |
Polyline | Компонуемая функция, добавляющая на карту ломаную линию. |
TileOverlay | Компонуемая функция, добавляющая на карту накладываемый фрагмент. |
Полный список компонуемых функций и типов данных приведен в справочной документации по библиотеке Maps Compose.
Требования
Чтобы начать работу с библиотекой Maps Compose в сочетании с Maps SDK для Android, нужно выполнить следующие действия:
- Скачать и установить Android Studio Arctic Fox.
Создать проект Google Карт в Android Studio со следующими настройками:
- Тип шаблона – Empty Compose Activity. Этот шаблон добавляет зависимости, необходимые для Jetpack Compose.
- Минимальная версия SDK – API 21: Android 5.0 (Lollipop) или более поздняя.
- Язык – Kotlin.
Получить ключ API и добавить его в проект.
Установить библиотеку Maps Compose для проекта согласно инструкциям в следующем разделе.
Установка
Чтобы установить библиотеку Maps Compose для проекта Google Карт, выполните следующие действия:
Добавьте в файл
build.gradle
на уровне модуля следующие зависимости:dependencies { // Android Maps Compose composables for the Maps SDK for Android implementation 'com.google.maps.android:maps-compose:4.4.1' }
Заново выполните сборку проекта в Android Studio, чтобы синхронизировать эти изменения.
Добавление карты в приложение
В следующем примере показано, как добавить карту с помощью компонуемой функции GoogleMap.
val singapore = LatLng(1.35, 103.87) val cameraPositionState = rememberCameraPositionState { position = CameraPosition.fromLatLngZoom(singapore, 10f) } GoogleMap( modifier = Modifier.fillMaxSize(), cameraPositionState = cameraPositionState ) { Marker( state = MarkerState(position = singapore), title = "Singapore", snippet = "Marker in Singapore" ) }
В этом примере карта занимает максимально возможное пространство, а в центре поля зрения камеры Сингапур. Чтобы задать позицию камеры, создается переменная CameraPositionState, которая определяется в объекте cameraPositionState
.
Затем в нашем примере кода вызывается компонуемая функция Marker в контенте карты, добавляющая маркер на карту.
Рекомендуем сравнить этот пример с приведенным в кратком руководстве, где для создания карты используются представления. Важно отметить, что при работе с компонуемыми функциями сокращается объем кода и можно не думать о жизненном цикле карты.
Как задать свойства карты
Задать свойства карты можно с помощью объекта MapProperties или MapUiSettings (последний используется для свойств, связанных с пользовательским интерфейсом). Изменение этих объектов запускает повторную генерацию карты.
В приведенном ниже примере функция Switch (компонент Material Design) используется для включения и отключения элементов управления масштабом карты.
var uiSettings by remember { mutableStateOf(MapUiSettings()) } var properties by remember { mutableStateOf(MapProperties(mapType = MapType.SATELLITE)) } Box(Modifier.fillMaxSize()) { GoogleMap( modifier = Modifier.matchParentSize(), properties = properties, uiSettings = uiSettings ) Switch( checked = uiSettings.zoomControlsEnabled, onCheckedChange = { uiSettings = uiSettings.copy(zoomControlsEnabled = it) } ) }
Что дальше
- Ознакомьтесь со страницей проекта библиотеки Maps Compose на GitHub.
- Ознакомьтесь с документацией по Jetpack Compose.