Как добавить анимацию траектории камеры

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

Чтобы сделать 3D-карту более интересной для пользователей, вы можете добавить на нее анимацию траектории камеры. Анимация траектории камеры может перемещать камеру к точке на карте, облетать ее или комбинировать эти действия, чтобы анимировать Camera до точки на карте, включая указание ее высоты и altitudeMode.

При настройке объекта Camera для анимации вы можете задать свойство altitudeMode, чтобы указать, как интерпретируется высота камеры:

  • AltitudeMode.absolute – высота в метрах над средним уровнем моря (значение по умолчанию, если не указано иное).
  • AltitudeMode.relativeToGround – высота в метрах над поверхностью земли в центральной точке камеры.
  • AltitudeMode.relativeToMesh. Высота интерпретируется как расстояние в метрах над самой высокой точкой 3D-сетки (например, зданием или рельефом) в центральной точке камеры.

Перейти к

В следующем примере кода показано, как использовать модификатор flyCameraTo, чтобы анимировать Camera для перемещения к определенной точке на 3D-карте.

Map(mode: .hybrid)
  .flyCameraTo(
    .init(
      center: .init(
        latitude: 47.6210296,
        longitude: -122.3496903,
        altitude: 585
      ),
      heading: 149.0,
      tilt: 77.0,
      roll: 0.0,
      range: 4000,
      altitudeMode: .relativeToGround
    ),
    duration: 5,
    trigger: animate,
    completion: {}
  )

Как перемещаться по карте

В следующем примере кода показано, как использовать модификатор flyCameraAround, чтобы анимировать Camera для облета определенной точки на 3D-карте.

Map(mode: .hybrid)
  .flyCameraAround(
    .init(
      center: .init(
        latitude: 47.6210296,
        longitude: -122.3496903,
        altitude: 585
      ),
      heading: 149.0,
      tilt: 77.0,
      roll: 0.0,
      range: 3000,
      altitudeMode: .relativeToGround
    ),
    duration: 90,
    repeatCount: 3,
    trigger: flyAround,
    completion: {}
  )