添加地图

选择平台Android iOS JavaScript

在 API 中,地图由 GMSMapView 类(UIView 的子类)表示。地图是 Maps SDK for iOS 中最重要的对象,提供了添加、移除和管理其他对象(例如标记和多段线)所需的方法。

简介

借助 Maps SDK for iOS,您可以在 iOS 应用中显示 Google 地图。这些地图与您在 Google 地图 iOS 应用中看到的地图具有相同的外观,并且 SDK 公开的许多功能也是相同的。

除了地图功能之外,该 API 还支持符合 iOS 界面模式的一系列互动。例如,您可以通过定义可响应用户手势(例如点按和点按两次)的响应器来设置与地图的互动。

使用 Map 对象时,关键类是 GMSMapView 类。GMSMapView 会自动处理以下操作:

  • 连接到 Google 地图服务。
  • 下载地图图块。
  • 在设备屏幕上显示图块。
  • 显示各种控件,例如平移和缩放控件。
  • 通过移动地图和将其放大或缩小来响应平移和缩放手势。
  • 通过倾斜地图的视角来响应双指的手势。

除了这些自动操作外,您还可以通过 GMSMapView 类提供的属性和方法来控制地图的行为和外观。GMSMapView 可让您通过 GMSCameraPosition 类添加和移除标记、地面叠加层和多段线,更改显示的地图类型,以及控制地图上显示的内容。

使用 SwiftUI 构建地图

SwiftUI 还提供了使用声明式方法创建界面的其他方法。您告诉 SwiftUI 您希望视图如何随着其所有不同状态而变化,系统将完成其余工作。每当底层状态因事件或用户操作而发生变化时,SwiftUI 都会更新视图。

Maps SDK for iOS 构建于 UIKit 之上,尚未提供与 SwiftUI 兼容的视图。如需在 SwiftUI 中添加地图,需要符合 UIViewRepresentableUIViewControllerRepresentable 的要求。如需了解详情,请参阅 Codelab 使用 SwiftUI 向 iOS 应用添加地图

添加地图

添加地图的基本步骤如下:

  1. 如需获取 SDK 和 API 密钥并添加所需的框架,请按以下内容中的步骤操作:

    1. 在 Google Cloud 控制台中进行设置

    2. 使用 API 密钥

    3. 设置 Xcode 项目

  2. AppDelegate 中,将您的 API 密钥提供给 GMSServices 上的 provideAPIKey: 类方法。

  3. 创建或更新 ViewController。如果要在此视图控制器变为可见时显示地图,请务必在 loadView 方法中创建它。

    1. 创建一个 GMSCameraPosition 对象,用于指定地图的中心和缩放级别。在实例化 GMSMapView 对象时,您必须将 GMSCameraPosition 对象作为必需参数传递。

    2. 使用 GMSMapView mapWithFrame: 方法创建并实例化一个 GMSMapView 类。如果此地图将用作视图控制器的唯一视图,则 CGRectZero 可用作地图的框架 - 系统会自动调整地图的大小。

    3. GMSMapView 对象设置为视图控制器的视图,例如 self.view = mapView;

下面的示例向某个应用添加了一个以新加坡市区为中心的地图。

Swift

import GoogleMaps

class MapObjects : UIViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
    let camera = GMSCameraPosition(latitude: 1.285, longitude: 103.848, zoom: 12)
    let mapView = GMSMapView(frame: .zero, camera: camera)
    self.view = mapView
  }
}
      

Objective-C

#import "MapObjects.h"
@import GoogleMaps;

@implementation MapObjects

- (void)viewDidLoad {
  [super viewDidLoad];
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285
                                                          longitude:103.848
                                                               zoom:12];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  self.view = mapView;
}

@end
      

完成上述步骤后,您可以进一步配置 GMSMapView 对象。

后续步骤

完成这些步骤后,您就可以配置地图设置了。