Пользователи могут управлять масштабом, наклоном, положением и поворотом камеры с помощью жестов на карте. Вы также можете настроить камеру программно.

Ориентация камеры
Модель представления карты предполагает направление камеры на определенную точку в пространстве. Положение и ориентация камеры определяются координатами широты, долготы и высоты (определяемыми как "центр", на который направлена камера), курсом, наклоном, диапазоном и креном.
Центр (широта, долгота, высота)
Центр определяет конкретную точку в трехмерном пространстве, на которую направлена камера. Для этого используется класс LatLngAltitude, который объединяет значения широты, долготы и высоты. Это позволяет позиционировать фокус камеры в трех измерениях.
Широта может принимать значение от -90 до 90 градусов включительно. Долгота может принимать значение от -180 до 180 градусов включительно. Высота указывается в метрах, а способ ее интерпретации определяется параметром altitudeMode камеры (по умолчанию AltitudeMode.ABSOLUTE, AltitudeMode.RELATIVE_TO_GROUND или AltitudeMode.RELATIVE_TO_MESH).
Направление
Направление задает ориентацию карты по компасу, измеряемую в градусах по часовой стрелке от географического севера. Север соответствует 0 градусов, восток – 90 градусов, юг – 180 градусов, а запад – 270 градусов.
Наклон
Наклон – это угол камеры относительно вертикальной оси, измеряемый в градусах. При нулевом угле наклона камера направлена вертикально вниз (в надир). При угле наклона 90 градусов камера направлена горизонтально в сторону, заданную ориентацией.
Диапазон
Диапазон определяет расстояние в метрах между положением камеры и центром карты. Диапазон может варьироваться от нуля метров (очень близко) до шестидесяти трех миллионов метров, что позволяет просматривать как очень близкие, так и действительно глобальные перспективы. Это позволяет управлять масштабом карты.
Угол поворота
Крен задает угол камеры относительно горизонта в градусах. Этот параметр можно использовать для создания эффектов, таких как крен во время имитации полета или даже полный переворот, вращая камеру вокруг оси обзора.
Управление камерой
В примере кода ниже показано, как программно управлятьCamera, вызывая метод setCamera для GoogleMap3D.
Чтобы использовать этот пример кода, следуйте инструкциям в разделах Настройка и Добавление 3D-карты в приложение. Это позволит вам настроить проект Android Studio с базовой 3D-картой. Затем добавьте в файл MainActivity.kt следующий код:
// Add imports
import com.google.android.gms.maps3d.model.Map3DMode
import com.google.android.gms.maps3d.model.camera
import com.google.android.gms.maps3d.model.latLngAltitude
// Add to the onMap3DViewReady method, after the googleMap3D object has been initialized
googleMap3D.setMapMode(Map3DMode.HYBRID)
googleMap3D.setCamera(
camera {
center = latLngAltitude {
latitude = 38.743502
longitude = -109.499374
altitude = 1467.0
}
heading = 350.0
tilt = 58.1
range = 138.2
roll = 0.0
}
)
Элементы управления пользовательского интерфейса
Помимо стандартных жестов, Maps 3D SDK для Android также предоставляет элементы управления пользовательского интерфейса для изменения положения камеры.
- Масштабирование – кнопки "+" и "-" для изменения масштаба карты.
- Перемещение – кнопки "←", "→", "↑" и "↓" для изменения центра карты.
- Поворот – кнопки "↺" и "↻" для изменения направления камеры.
- Наклон – кнопки "^" и "⌄" для изменения наклона камеры.
- Компас указывает направление на север и позволяет сбросить ориентацию камеры на север.
В приведенном ниже примере кода показано, как изменить видимость элементов управления пользовательского интерфейса.
```kotlin // Добавьте импорт import com.google.android.gms.maps3d.UiControlSettings import com.google.android.gms.maps3d.model.CompassControl import com.google.android.gms.maps3d.model.TiltControl import com.google.android.gms.maps3d.model.ZoomControl</p> <p>...</p> <p>val uiControlSettings = googleMap3D.getUiControlSettings()</p> <p>// Показывать элементы управления пользовательского интерфейса на правом краю карты uiControlSettings?.setUiControlsPlacement( listOf(CompassControl(), ZoomControl(), TiltControl()), UiControlSettings.ControlPlacement.TRAILING )</p> <p>// Скрывать элементы управления пользовательского интерфейса на правом краю карты uiControlSettings?.setUiControlsPlacement( emptyList(), UiControlSettings.ControlPlacement.TRAILING )