用户可以使用地图上的手势来控制镜头的缩放、倾斜、位置和旋转。您还可以通过编程方式配置相机。

镜头位置
地图视图被建模成一个看向空间中特定点的镜头。镜头的位置和方向由纬度/经度/海拔坐标(定义为“中心”,即镜头指向的位置)、航向、倾斜度、范围和侧倾角定义。
中心(纬度、经度、海拔)
center 定义了相机在 3D 空间中观察的具体点。这是使用 LatLngAltitude 类指定的,该类结合了纬度、经度和海拔高度的值。这样,您就可以在三维空间中定位相机的焦点。
纬度可以介于 -90 度(含)和 90 度(含)之间。经度范围为 -180 度(含)到 180 度(含)。海拔高度以米为单位指定,海拔高度的解读方式由相机的 altitudeMode(默认为 AltitudeMode.ABSOLUTE、AltitudeMode.RELATIVE_TO_GROUND 或 AltitudeMode.RELATIVE_TO_MESH)决定。
标题
heading 指定地图的罗盘方向,以与正北方所呈顺时针角度(以度为单位)表示。北方对应 0 度,东方对应 90 度,南方对应 180 度,西方对应 270 度。
倾斜
倾斜度指定了镜头相对于垂直轴的角度,以度为单位。倾斜度为 0 度表示镜头竖直朝下,指向地球(天底)。倾斜度为 90 度表示镜头水平指向朝向指定的方向。
Range
范围是指相机自身位置与地图中心之间的距离(以米为单位)。范围可以从 0 米(非常近)到 6300 万米,从而可以从非常近的视角一直到真正的全球视角。这可以有效控制地图的“放大”或“缩小”程度。
掷
滚转角用于设置镜头相对于地平线的角度,以度为单位。此参数可用于在飞行模拟器中创建倾斜效果,甚至可以创建完整的横滚效果,即让相机围绕其视角轴旋转。
控制相机
以下代码示例演示了如何通过对GoogleMap3D 调用 setCamera 方法,以编程方式控制 Camera。
如需使用此代码示例,请按照设置和向应用添加 3D 地图中的说明,使用基本 3D 地图设置 Android Studio 项目。然后,将以下代码添加到 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
}
)
界面控件
除了标准手势之外,Android 版 Maps 3D SDK 还提供用于操控镜头位置的界面控件。
- 缩放控件:可显示“+”和“-”按钮,用于更改地图的缩放级别。
- 移动控件:可显示“←”“→”“↑”和“↓”按钮,用于更改地图的中心。
- 旋转控件:显示“↺”和“↻”,用于更改镜头的朝向。
- 倾斜控件:可显示“^”和“⌄”,用于更改镜头的倾斜度。
- 罗盘控件指示罗盘北方,并允许将镜头重置为朝向北方。
以下代码示例展示了如何更改界面控件的可见性:
```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 )