אתם יכולים להוסיף אנימציות של נתיב המצלמה למפה התלת-ממדית כדי לספק למשתמשים חוויה עשירה יותר. אנימציות של נתיב המצלמה יכולות לעבור לנקודה מסוימת במפה, להסתובב סביבה או לשלב בין שתי הפעולות כדי להנפיש את Camera, כולל ציון הגובה וaltitudeMode שלה.
כשמגדירים Camera לאנימציה, אפשר להגדיר את המאפיין altitudeMode (או לקרוא ל-setAltitudeMode) כדי לציין איך לפרש את הגובה של המצלמה:
-
AltitudeMode.ABSOLUTE: הגובה מתפרש כמטרים מעל פני הים הממוצעים (ערך ברירת המחדל אם לא מצוין אחרת). -
AltitudeMode.RELATIVE_TO_GROUND: מפרש את הגובה כמטרים מעל פני הקרקע בנקודת המרכז של המצלמה. -
AltitudeMode.RELATIVE_TO_MESH: מפרש את הגובה כמטרים מעל פני השטח הגבוהים ביותר של רשת תלת-ממדית (כמו בניינים או עצים) בנקודת המרכז של המצלמה.
מעבר בטיסה אל
דוגמת הקוד הבאה ממחישה איך להוסיף אנימציה ל-Camera כדי לעבור לנקודה ספציפית במפה תלת-ממדית. לשם כך, מפעילים את השיטה 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 כדי שיעוף סביב נקודה ספציפית במפה תלת-ממדית. לשם כך, מפעילים את השיטה 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
}
)