配置相机控件

请选择平台: Android iOS JavaScript

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

3D 相机模型示意图

镜头位置

地图视图被建模成一个看向空间中特定点的镜头。镜头的位置和方向由纬度/经度/海拔坐标、航向、倾斜度、范围和滚动定义。

纬度、经度、海拔

镜头的初始位置通过设置纬度、经度和海拔来定义。这些值共同决定了镜头的位置,而不是镜头的指向或中心。

纬度可以介于 -90 度(含)和 90 度(含)之间。经度范围为 -180 度(含)到 180 度(含)。海拔高度以海拔米数指定。

不在此范围内的值会被调整为此范围内最接近的值。例如,如果将纬度指定为 100,系统会将该值设为 90。

标题

heading 指定地图的罗盘方向,以与正北方所呈顺时针角度(以度为单位)表示。北方对应 0 度,东方对应 90 度,南方对应 180 度,西方对应 270 度。

倾斜

倾斜度指定了镜头相对于垂直轴的角度,以度为单位。倾斜度为 0 度表示镜头竖直朝下,指向地球(天底)。倾斜度为 90 度表示镜头水平指向朝向指定的方向。

Range

范围是指相机自身位置与地图中心之间的距离(以米为单位)。范围可以从 0 米(非常近)到 6300 万米,从而可以从非常近的视角一直到真正的全球视角。这可以有效控制地图的“放大”或“缩小”程度。

掷

滚转角用于设置镜头相对于地平线的角度,以度为单位。此参数可用于在飞行模拟器中创建倾斜效果,甚至可以创建完整的横滚效果,即让相机围绕其视角轴旋转。

控制相机

以下代码示例演示了如何以编程方式控制摄像头。

Swift


public static var sanFrancisco: Camera = .init(
  center: .init(
    latitude: 37.7845812,
    longitude: -122.3660241,
    altitude: 585),
  fieldOfView: .init(degrees: 100),
  heading: 288.0,
  tilt: 75.0,
  roll: 0.0,
  range: 100)

界面控件

除了标准手势之外,iOS 版 Maps 3D SDK 还提供用于操控相机位置的界面控件。

  • 缩放控件:可显示“+”和“-”按钮,用于更改地图的缩放级别。
  • 移动控件:可显示“←”“→”“↑”和“↓”按钮,用于更改地图的中心。
  • 旋转控件:显示“↺”和“↻”,用于更改镜头的朝向。
  • 倾斜控件:可显示“^”和“⌄”,用于更改镜头的倾斜度。
  • 罗盘控件指示罗盘北方,并允许将镜头重置为朝向北方。

以下代码示例展示了如何更改界面控件的可见性:

swift struct ContentView: View { @State private var showControls = true</p> <p>var body: some View { Map(mode: .hybrid) .mapControls(at: .trailing) { if showControls { CompassControl() ZoomControl() TiltControl() } } } } ```