配置相机控件

请选择平台: Android iOS JavaScript

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

3D 相机模型示意图

镜头位置

地图视图被建模成一个看向空间中特定点的镜头。镜头的位置和方向由纬度/经度/海拔坐标(定义为“中心”,即镜头指向的位置)、航向、倾斜度、范围和侧倾角定义。

中心(纬度、经度、海拔)

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 )