
Trang này trình bày ví dụ về cách thêm bản đồ 3D cơ bản vào ứng dụng iOS bằng SDK Maps 3D dành cho iOS. Hướng dẫn trên trang này giả định rằng bạn đã hoàn tất các bước trong trang Thiết lập và có những thông tin sau:
- Một dự án trên Google Cloud đã bật SDK Maps 3D dành cho iOS
- Khoá API cho SDK Maps 3D dành cho iOS
- Xcode phiên bản 16.0 trở lên có thêm gói SDK Maps 3D dành cho iOS.
Để biết thêm thông tin về các điều kiện tiên quyết này, hãy xem phần Thiết lập.
Làm theo một lớp học lập trình nâng cao hơn.
Phần 1: Tạo một ứng dụng SwiftUI cơ bản
- Tạo một ứng dụng mới trong Xcode.
- Đặt Tên sản phẩm thành
Hello3DWorld, với giá trị nhận dạng tổ chức được đặt thànhcom.example. Tên gói phải làcom.example.Hello3DWorld. - Chọn giao diện SwiftUI.
- Thêm thư viện Maps 3D vào ứng dụng của bạn. Xem hướng dẫn trong phần thiết lập.
Phần 2: Thêm bản đồ
Mở tệp có tên
ContentView.swift. Đây là điểm truy cập và thành phần điều hướng chính cho ứng dụng của bạn.Nhập
SwiftUIvà góiGoogleMaps3D.Thay thế tất cả mã bên trong phần khai báo nội dung bằng Map(mode: .hybrid).
Cấu hình ban đầu tối thiểu mà bạn cần cung cấp để khởi động
MaplàMapMode:.hybrid,.roadmaphoặc.satellite
Tệp
ContentView.swiftcủa bạn sẽ có dạng như bên dưới:import SwiftUI import GoogleMaps3D struct ContentView: View { var body: some View { Map(mode: .hybrid) } } #Preview { ContentView() }
Phần 3: Đặt khoá API.
Bạn phải đặt khoá API trước khi Bản đồ khởi chạy. Hãy làm việc này bằng cách đặt
Map.apiKeytrong trình xử lý sự kiệninit()củaViewchứa Bản đồ.import SwiftUI import GoogleMaps3D struct ContentView: View { init () { Map.apiKey = "YOUR_API_KEY" } var body: some View { Map(mode: .hybrid) } }
Phần 4: Sử dụng camera để điều khiển chế độ xem bản đồ
Chế độ xem bản đồ 3D do lớp Camera kiểm soát. Trong bước này, bạn sẽ tìm hiểu cách chỉ định vị trí, độ cao, hướng, độ nghiêng, độ xoay và phạm vi để tuỳ chỉnh chế độ xem bản đồ.
Thay đổi lệnh gọi hàm
Map()để thêm thuộc tínhinitialCamera. Khởi độnginitialCamerađể hiển thị khung cảnh trung tâm thành phố Manhattan.import SwiftUI import GoogleMaps3D struct ContentView: View { init () { Map.apiKey = "YOUR_API_KEY" } var body: some View { Map(initialCamera: .init( center: .init(latitude: 40.748339, longitude: -73.985912, altitude: 211.1), heading: 52, tilt: 68, roll: 0.0, range: 1039, fieldOfView: .degrees(50) ), mode: .hybrid) } }
Đoạn mã trên đặt giá trị cho các tham số sau:
center:LatLngAltitudeđại diện cho vị trí cameraheading: Góc phương vị tính bằng độ từ hướng bắc để hướng máy ảnh về phía đó.tilt: Góc nghiêng tính bằng độ, trong đó 0 là ngay trên đầu và 90 là nhìn theo chiều ngang.roll: Góc xoay quanh mặt phẳng dọc của máy ảnh, tính bằng độ.range: Khoảng cách tính bằng mét của camera từ vị trí vĩ độ, kinh độfieldOfView: Góc đại diện cho trường nhìn của camera
Nếu bạn không cung cấp bất kỳ tham số bổ sung nào trong số này, thì hệ thống sẽ sử dụng giá trị mặc định.
Để chế độ xem camera hiển thị nhiều dữ liệu 3D hơn, hãy đặt các tham số ban đầu để hiển thị chế độ xem gần hơn, nghiêng hơn.
Phần 5: Xem trước và chạy ứng dụng
Thêm bản xem trước Xcode
Bản xem trước là một tính năng mạnh mẽ của XCode, cho phép bạn xem và tương tác với Ứng dụng mà không cần sử dụng Trình mô phỏng hoặc thiết bị bên ngoài.
Để thêm bản xem trước, hãy thêm một khối mã
#Preview {}bên ngoài cấu trúc của bạn.#Preview { ContentView() }Chạy ứng dụng
Tạo bản dựng và chạy ứng dụng
Trạng thái tải bản đồ và trạng thái lỗi
SDK Maps 3D dành cho iOS tự động hiển thị phản hồi trực quan tích hợp sẵn trong khi quản lý trạng thái của Map:
- Lớp phủ đang tải: Chỉ báo tiến trình ở giữa sẽ xuất hiện khi chế độ xem bản đồ được khởi chạy lần đầu hoặc đang tải.
- Lớp phủ lỗi: Lớp phủ lỗi sẽ xuất hiện nếu bản đồ không tải được.
Nếu áp dụng định kiểu bản đồ dựa trên đám mây bằng cách sử dụng
style(mapID:error:)
trên Map, bạn
có thể truyền một hàm đóng error để xử lý lỗi tải kiểu.
Theo dõi các sự kiện nhấn vào bản đồ
Để theo dõi các sự kiện nhấn trên bản đồ, hãy áp dụng đối tượng sửa đổi onTap(_:) cho Map.
Khi người dùng nhấn vào bản đồ, hàm closure sẽ nhận được một giá trị MapTapInfo cung cấp location (LatLngAltitude) và content được nhấn (MapTapInfo.Content.map hoặc MapTapInfo.Content.place(id:)). Để biết thêm thông tin về các hoạt động tương tác với địa điểm yêu thích, hãy xem bài viết Tương tác với địa điểm yêu thích.
Map(mode: .hybrid)
.onTap { tapInfo in
print("Tapped at \(tapInfo.location), content: \(tapInfo.content)")
}
Xin chúc mừng!
Bạn đã thêm thành công bản đồ 3D vào một ứng dụng!
Tiếp theo, bạn có thể khám phá các tính năng nâng cao hơn của SDK Maps 3D dành cho iOS, chẳng hạn như ảnh động đường đi của camera, điểm đánh dấu 3D hoặc đa giác.