3D 지도에 카메라 경로 애니메이션을 추가하여 사용자에게 더욱 몰입감 있는 환경을 제공할 수 있습니다. 카메라 경로 애니메이션은 지도의 한 지점으로 날아가거나, 지도의 한 지점 주변을 날거나, 결합하여 Camera를 애니메이션으로 표시할 수 있습니다. 여기에는 고도 및 altitudeMode 지정이 포함됩니다.
애니메이션의 Camera를 구성할 때 altitudeMode 속성을 설정하거나 setAltitudeMode를 호출하여 카메라의 고도가 해석되는 방식을 지정할 수 있습니다.
AltitudeMode.ABSOLUTE: 고도를 평균 해수면 위의 미터로 해석합니다 (지정되지 않은 경우 기본값).AltitudeMode.RELATIVE_TO_GROUND: 고도를 카메라 중심점의 지표면 위 미터로 해석합니다.AltitudeMode.RELATIVE_TO_MESH: 고도를 카메라 중심점의 가장 높은 3D 메시 표면 (예: 건물 또는 나무) 위의 미터로 해석합니다.
빠른 이동
다음 코드 샘플은 FlyToOptions 구성을 사용하여 GoogleMap3D에서 flyCameraTo 메서드를 호출하여 3D 지도의 특정 지점으로 이동하도록 Camera에 애니메이션을 적용하는 방법을 보여줍니다.
// 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
}
)
비행
다음 코드 샘플은 FlyAroundOptions 구성으로 GoogleMap3D에서 flyCameraAround 메서드를 호출하여 3D 지도에서 특정 지점을 중심으로 비행하도록 Camera에 애니메이션을 적용하는 방법을 보여줍니다.
// 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
}
)