
本页面通过一个示例介绍了如何使用 iOS 版 Maps 3D SDK 向 iOS 应用添加基本 3D 地图。本页面中的说明假定您已完成设置页面中的步骤,并具备以下条件:
- 已启用 Maps 3D SDK for iOS 的 Google Cloud 项目
- Maps 3D SDK for iOS 的 API 密钥
- Xcode 16.0 版或更高版本,并添加了 iOS 版 Maps 3D SDK 软件包。
如需详细了解这些前提条件,请参阅设置。
第 1 部分:创建基本的 SwiftUI 应用
- 在 Xcode 中创建新应用。
- 将产品名称设置为
Hello3DWorld,并将组织标识符设置为com.example。软件包名称应为com.example.Hello3DWorld。 - 选择 SwiftUI 界面。
- 将 Maps 3D 库添加到您的应用中。请参阅“设置”部分中的说明。
第 2 部分:添加地图
打开名为
ContentView.swift的文件。这是应用的入口点和主导航。导入
SwiftUI和GoogleMaps3D软件包。将 body 声明中的所有代码替换为 Map(mode: .hybrid)。
初始化
Map所需提供的最低初始配置是MapMode:.hybrid、.roadmap,或者.satellite
您的
ContentView.swift文件应如下所示:import SwiftUI import GoogleMaps3D struct ContentView: View { var body: some View { Map(mode: .hybrid) } } #Preview { ContentView() }
第 3 部分:设置 API 密钥。
必须在地图初始化之前设置 API 密钥。为此,请在包含地图的
View的init()事件处理脚本中设置Map.apiKey。import SwiftUI import GoogleMaps3D struct ContentView: View { init () { Map.apiKey = "YOUR_API_KEY" } var body: some View { Map(mode: .hybrid) } }
第 4 部分:使用镜头控制地图视图
3D 地图视图由 Camera 类控制。在此步骤中,您将学习如何指定位置、海拔、航向、倾斜度、横滚和范围,以自定义地图视图。
更改
Map()函数调用,以包含initialCamera属性。 初始化initialCamera以显示曼哈顿市中心的视图。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) } }
上述代码为以下参数设置了值:
center:表示摄像头位置的LatLngAltitudeheading:镜头指向的方向,以与正北方所呈角度表示。tilt:倾斜角度(以度为单位),其中 0 表示正上方,90 表示水平方向。roll:围绕相机垂直平面的滚动角度(以度为单位)。range:相机与纬度、经度位置之间的距离(以米为单位)fieldOfView:表示相机视野范围的角度
如果您未提供任何这些额外参数,系统将使用默认值。
如需让相机视图显示更多 3D 数据,请设置初始参数,以显示更近的倾斜视图。
第 5 部分:预览并运行应用
添加 Xcode 预览
预览是一项强大的 XCode 功能,可让您查看应用并与之互动,而无需使用模拟器或外部设备。
如需添加预览,请在结构体外部添加
#Preview {}代码块。#Preview { ContentView() }运行应用
构建并运行应用。
地图加载和错误状态
iOS 版 Maps 3D SDK 会在管理 Map 的状态时自动显示内置视觉反馈:
- 加载叠加层:在地图视图首次初始化或加载时,系统会显示一个居中的进度指示器。
- 错误叠加层:如果地图加载失败,系统会显示错误叠加层。
如果您在 Map 上使用 style(mapID:error:) 应用云端地图样式设置,则可以传递 error 闭包来处理样式加载错误。
监听地图点按事件
如需监听地图上的点按事件,请将 onTap(_:) 修饰符应用于 Map。当用户点按地图时,闭包会收到一个 MapTapInfo 值,该值提供 location (LatLngAltitude) 和点按的 content(MapTapInfo.Content.map 或 MapTapInfo.Content.place(id:))。如需详细了解地图注点互动,请参阅与地图注点互动。
Map(mode: .hybrid)
.onTap { tapInfo in
print("Tapped at \(tapInfo.location), content: \(tapInfo.content)")
}
恭喜!
您已成功向应用添加 3D 地图!
接下来,您可以探索 iOS 版 Maps 3D SDK 的更多高级功能,例如镜头路径动画、3D 标记或多边形。