Чтобы сделать 3D-карту более интересной для пользователей, вы можете добавить на нее анимацию траектории камеры. Анимация траектории камеры может перемещать камеру к точке на карте, облетать ее или комбинировать эти действия, чтобы анимировать Camera до точки на карте, включая указание ее высоты и altitudeMode.
При настройке объекта Camera для анимации вы можете задать свойство altitudeMode (или вызвать метод setAltitudeMode), чтобы указать, как интерпретируется высота камеры:
AltitudeMode.ABSOLUTE– высота в метрах над средним уровнем моря (значение по умолчанию, если не указано иное).AltitudeMode.RELATIVE_TO_GROUND– высота в метрах над поверхностью земли в центральной точке камеры.AltitudeMode.RELATIVE_TO_MESH. Высота в метрах над самой высокой точкой 3D-сетки (например, над зданием или деревом) в центре камеры.
Перейти к
В примере кода ниже показано, как анимировать Camera, чтобы камера перемещалась к определенной точке на 3D-карте. Для этого нужно вызвать метод flyCameraTo для GoogleMap3D с конфигурацией FlyToOptions.
// Add imports and define constants
import com.google.android.gms.maps3d.model.AltitudeMode
import com.google.android.gms.maps3d.model.FlyToOptions
import com.google.android.gms.maps3d.model.FlyAroundOptions
import com.google.android.gms.maps3d.model.Camera
import com.google.android.gms.maps3d.model.Map3DMode
import com.google.android.gms.maps3d.model.latLngAltitude
const val EMPIRE_STATE_BUILDING_LATITUDE = 40.748233
const val EMPIRE_STATE_BUILDING_LONGITUDE = -73.985663
// Add to the onMap3DViewReady method, after the googleMap3D object has been initialized
googleMap3D.setMapMode(Map3DMode.HYBRID)
googleMap3D.flyCameraTo(
flyToOptions {
endCamera = camera {
center = latLngAltitude {
latitude = EMPIRE_STATE_BUILDING_LATITUDE
longitude = EMPIRE_STATE_BUILDING_LONGITUDE
altitude = 212.0 // in meters
}
heading = 34.0 // bearing in degrees
tilt = 67.0 // relative to vertical
range = 750.0 // distance away from the focal point in meters
roll = 0.0 // roll relative to horizontal
altitudeMode = AltitudeMode.RELATIVE_TO_GROUND
}
durationInMillis = 2000
}
)
Как перемещаться по карте
В примере кода ниже показано, как анимировать Camera, чтобы камера облетала определенную точку на 3D-карте. Для этого вызывается метод flyCameraAround для GoogleMap3D с конфигурацией FlyAroundOptions.
// Add imports and define constants
import com.google.android.gms.maps3d.model.AltitudeMode
import com.google.android.gms.maps3d.model.Map3DMode
import com.google.android.gms.maps3d.model.latLngAltitude
const val EMPIRE_STATE_BUILDING_LATITUDE = 40.748233
const val EMPIRE_STATE_BUILDING_LONGITUDE = -73.985663
// Add to the onMap3DViewReady method, after the googleMap3D object has been initialized
googleMap3D.setMapMode(Map3DMode.HYBRID)
googleMap3D.flyCameraAround(
flyAroundOptions {
center = camera {
center = latLngAltitude {
latitude = EMPIRE_STATE_BUILDING_LATITUDE
longitude = EMPIRE_STATE_BUILDING_LONGITUDE
altitude = 212.0
}
heading = 34.0
tilt = 67.0
range = 750.0
roll = 0.0
altitudeMode = AltitudeMode.RELATIVE_TO_GROUND
}
durationInMillis = 5000
rounds = 1.0 // Number of rotations - can be fractional
}
)