Как настроить управление камерой

Выберите платформу: Android iOS JavaScript

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

Схема, иллюстрирующая модель 3D-камеры

Ориентация камеры

Модель представления карты предполагает направление камеры на определенную точку в пространстве. Положение и ориентация камеры определяются координатами широты, долготы и высоты (определяемыми как "центр", на который направлена камера), курсом, наклоном, диапазоном и креном.

Центр (широта, долгота, высота)

Центр определяет конкретную точку в трехмерном пространстве, на которую направлена камера. Для этого используется класс 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 )