Thiết lập các chế độ điều khiển máy ảnh

Chọn nền tảng: Android iOS JavaScript

Người dùng có thể điều khiển việc thu phóng, độ nghiêng, vị trí và chế độ xoay của camera bằng cách sử dụng các cử chỉ trên bản đồ. Bạn cũng có thể định cấu hình camera theo phương thức lập trình.

Sơ đồ minh hoạ mô hình camera 3D

Vị trí camera

Chế độ xem bản đồ được mô phỏng như một máy ảnh nhìn vào một điểm cụ thể trong không gian. Vị trí và hướng của camera được xác định bằng toạ độ vĩ độ/kinh độ/cao độ (được xác định là "tâm", nơi camera đang hướng tới), hướng, độ nghiêng, phạm vi và độ lăn.

Tâm (vĩ độ, kinh độ, độ cao)

center xác định điểm cụ thể trong không gian 3D mà camera đang quan sát. Bạn có thể chỉ định vị trí này bằng cách sử dụng lớp LatLngAltitude, kết hợp các giá trị cho vĩ độ, kinh độ và cao độ. Thao tác này cho phép bạn định vị tiêu điểm của camera theo ba chiều.

Vĩ độ có thể nằm trong khoảng từ -90 đến 90 độ. Kinh độ nằm trong khoảng từ -180 đến 180 độ. Độ cao được chỉ định bằng mét và cách diễn giải độ cao được xác định bằng altitudeMode của camera (AltitudeMode.ABSOLUTE theo mặc định, AltitudeMode.RELATIVE_TO_GROUND hoặc AltitudeMode.RELATIVE_TO_MESH).

Hướng

Hướng chỉ định hướng la bàn của bản đồ, được đo bằng độ theo chiều kim đồng hồ từ hướng Bắc thực. Hướng Bắc tương ứng với 0 độ, hướng Đông tương ứng với 90 độ, hướng Nam tương ứng với 180 độ và hướng Tây tương ứng với 270 độ.

Độ nghiêng

Độ nghiêng chỉ định góc của camera so với trục dọc, được đo bằng độ. Độ nghiêng 0 độ có nghĩa là camera đang hướng thẳng xuống Trái Đất (thiên để). Độ nghiêng 90 độ có nghĩa là camera hướng theo chiều ngang theo hướng được chỉ định bởi heading.

Phạm vi

Phạm vi xác định khoảng cách tính bằng mét giữa vị trí của camera và tâm của bản đồ. Phạm vi có thể thay đổi từ 0 mét (rất gần) đến 63 triệu mét, cho phép xem từ khoảng cách rất gần cho đến góc nhìn toàn cầu. Thao tác này giúp kiểm soát hiệu quả mức độ "phóng to" hoặc "thu nhỏ" của bản đồ.

Độ xoay

Góc xoay đặt góc của camera so với đường chân trời, được đo bằng độ. Bạn có thể dùng tham số này để tạo các hiệu ứng như nghiêng trong quá trình chế độ mô phỏng máy bay hoặc thậm chí là xoay tròn, xoay camera quanh trục xem.

Điều khiển máy ảnh

Mã mẫu sau đây minh hoạ cách kiểm soát Camera theo phương thức lập trình bằng cách gọi phương thức setCamera trên GoogleMap3D. Để sử dụng mã mẫu này, hãy làm theo hướng dẫn trong phần Thiết lập và Thêm bản đồ 3D vào ứng dụng để thiết lập dự án Android Studio bằng bản đồ 3D cơ bản. Sau đó, hãy thêm mã sau vào tệp 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
    }
)

Thành phần điều khiển trên giao diện người dùng

Ngoài các cử chỉ chuẩn, SDK Maps 3D dành cho Android còn cung cấp các thành phần điều khiển trên giao diện người dùng để điều chỉnh vị trí của camera.

  • Điều khiển thu phóng hiển thị các nút "+" và "-" để thay đổi mức thu phóng của bản đồ.
  • Nút điều khiển di chuyển hiển thị các nút "←", "→", "↑" và "↓" để thay đổi tâm của bản đồ.
  • Bộ điều khiển xoay hiển thị "↺" và "↻" để thay đổi hướng của camera.
  • Nút điều khiển độ nghiêng hiển thị "^" và "⌄" để thay đổi độ nghiêng của camera.
  • Điều khiển la bàn cho biết hướng bắc của la bàn và cho phép đặt lại camera về hướng bắc.

Mã mẫu sau đây cho biết cách thay đổi chế độ hiển thị của các thành phần điều khiển trên giao diện người dùng:

```kotlin // Thêm lệnh nhập 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>// Hiện các thành phần điều khiển trên giao diện người dùng ở cạnh sau của bản đồ uiControlSettings?.setUiControlsPlacement( listOf(CompassControl(), ZoomControl(), TiltControl()), UiControlSettings.ControlPlacement.TRAILING )</p> <p>// Ẩn các thành phần điều khiển trên giao diện người dùng ở cạnh sau của bản đồ uiControlSettings?.setUiControlsPlacement( emptyList(), UiControlSettings.ControlPlacement.TRAILING )