iOS 版高级计划使用入门

注意:Google Maps Platform 高级计划不再开放注册,也不再提供给新客户。

您的 Google Maps Platform 高级计划许可能够为 Maps SDK for iOS 提供增强型支持。本文档介绍了如何使用随高级计划分发的 Maps SDK for iOS 创建 iOS 应用。

概览

按照本页面上的说明下载 SDK、设置项目并添加地图。下面概要列出了所需步骤:

  1. 安装 Xcode 和 SDK。
  2. 获取 API 密钥。
  3. 向您的应用添加 API 密钥。
  4. 添加地图。

安装 Xcode 和 SDK

获取最新版本的 Xcode

若要使用 Maps SDK for iOS 构建项目,您需要获取 11.7 版或更高版本的 Xcode

安装 SDK

使用 CocoaPods

Maps SDK for iOS 以 CocoaPods pod 的形式提供。CocoaPods 是一种用于 Swift 和 Objective-C Cocoa 项目的开源依赖项管理器。

如果您尚未安装 CocoaPods 工具,请在 macOS 上从终端运行以下命令进行安装。如需了解详情,请参阅 CocoaPods 入门指南

sudo gem install cocoapods

为 Maps SDK for iOS 创建一个 Podfile,并使用它来安装 API 及其依赖项:

  1. 如果您尚未创建 Xcode 项目,请立即创建一个并将其保存到您的本地计算机上。(如果您刚开始接触 iOS 开发,请创建一个新项目,然后选择 iOS App template [iOS 应用模板]。在 Xcode 11.7 或早期版本中,创建一个 Single View Application [单视图应用]。)
  2. 在您的项目目录中创建一个名为 Podfile 的文件。此文件可定义您项目的依赖项。
  3. 修改 Podfile 并添加您的依赖项。下面的示例包含 Maps SDK for iOS 和 Places SDK for iOS 所需的依赖项(可选):
    source 'https://github.com/CocoaPods/Specs.git'
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleMaps'
      pod 'GooglePlaces'
    end
  4. 保存 Podfile
  5. 打开一个终端,然后转到包含 Podfile 的目录:

    cd <path-to-project>
  6. 运行 pod install 命令。此操作会安装 Podfile 中指定的 API 及其可能具有的任何依赖项。

    pod install
  7. 关闭 Xcode,然后打开(双击)您项目的 .xcworkspace 文件以启动 Xcode。从此刻开始,您必须使用 .xcworkspace 文件打开项目。

手动安装

本指南介绍了如何向您的项目手动添加 GoogleMaps 框架,以及如何在 Xcode 中配置您的构建设置。

  1. 下载 SDK 源文件:GoogleMaps-3.10.0
  2. 解压缩源文件。
  3. 启动 Xcode,并打开现有的项目或创建新项目。如果您刚开始接触 iOS,请创建一个“Single View Application”(单视图应用),然后停用“Use Storyboards”(使用故事板),并启用“Use Automatic Reference Counting”(使用自动引用计数)。
  4. 将以下软件包拖动到您的项目中,系统显示提示时,选择 Copy items if needed, please use the same version as above.(需要时复制项目,请使用上面的 Xcode 版本。):
    • GoogleMaps-x.x.x/Base/Frameworks/GoogleMapsBase.framework
    • GoogleMaps-x.x.x/Maps/Frameworks/GoogleMaps.framework
    • GoogleMaps-x.x.x/Maps/Frameworks/GoogleMapsCore.framework

    高级计划客户还必须包含 GoogleMaps-x.x.x/M4B/Frameworks/GoogleMapsM4B.framework

  5. 右键点击项目中的 GoogleMaps.framework,然后选择 Show In Finder(在查找器中显示)。
  6. GoogleMaps.bundleResources 文件夹拖动到项目中。系统显示提示时,确保没有选中“Copy items into destination group's folder”(将项目复制到目标组的文件夹)。
  7. 从项目导航器中选择项目,然后选择应用的目标。
  8. 打开“Build Phases”(构建阶段)标签页,并在“Link Binary with Libraries”(将二进制文件链接到库)中添加以下框架:
    • GoogleMapsBase.framework
    • GoogleMaps.framework
    • GoogleMapsCore.framework
    • GoogleMapsM4B.framework(仅高级计划客户需要添加)
    • Accelerate.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreImage.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libz.tbd
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  9. 选择项目而不是具体的目标,并打开“Build Settings”(构建设置)标签页。在“Other Linker Flags”(其他链接器标志)部分中,添加 -ObjC如果看不到这些设置,请将“Build Settings”(构建设置)栏中的过滤条件从“Basic”(基本)更改为“All”(全部)。

  10. 如需安装 Places SDK for iOS,请参阅 Places SDK for iOS 使用入门

获取 API 密钥

若要向 Maps SDK for iOS 验证应用的身份,您需要一个仅限于应用特定软件包标识符的 API 密钥。这一组合会创建一个 iOS 特定的 API 密钥

点击下面的按钮,系统将指导您完成获取 API 密钥的流程。如果您的项目已有 iOS 特定的 API 密钥,您可以使用该密钥。重要提示:在项目下拉菜单中,您必须选择在购买 Google Maps Platform 高级计划时为您创建的项目。项目名称以 Google Maps API for Business 或 Google Maps for Work 或 Google Maps 开头。

开始使用

或者,请按照下列步骤获取 API 密钥:

  1. 转到 Google Cloud Platform Console
  2. 在项目下拉菜单中,选择高级计划项目。*
  3. 点击继续
  4. 凭据页面上,获取 API 密钥
    注意:如果您已有 iOS 特定的 API 密钥,可以使用该密钥。您可以在同一项目中的任何 iOS 应用上使用同一密钥。
  5. 从显示 API 密钥的对话框中,选择限制密钥,以设置对该 API 密钥的 iOS 限制。
  6. 限制部分中,选择 iOS 应用,然后输入应用的软件包标识符。例如:com.example.hellomap
  7. 点击保存

    新的 iOS 特定的 API 密钥会显示在项目的 API 密钥列表中。API 密钥是类似于如下的字符串:

    AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0

您也可以在 Google Cloud Platform Console 中查找现有密钥

如需详细了解如何使用 Google Cloud Platform Console,请参阅 Google Cloud Platform Console 帮助

向您的应用添加 API 密钥

Swift

按照以下方法向 AppDelegate.swift 添加 API 密钥:

  1. 添加以下 import 语句:
    import GoogleMaps
  2. 将以下内容添加到您的 application(_:didFinishLaunchingWithOptions:) 方法,并将其中的“YOUR_API_KEY”替换为您的 API 密钥:
    GMSServices.provideAPIKey("YOUR_API_KEY")
  3. 如果您也使用 Places API,请按照下面的内容再次添加密钥:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

按照以下方法向 AppDelegate.m 添加 API 密钥:

  1. 添加以下 import 语句:
    @import GoogleMaps;
  2. 将以下内容添加到您的 application:didFinishLaunchingWithOptions: 方法,并将其中的“YOUR_API_KEY”替换为您的 API 密钥:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];
  3. 如果您也使用 Places API,请按照下面的内容再次添加密钥:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

添加地图

以下代码展示了如何将简单地图添加到现有的 ViewController。如果您要创建新应用,首先请按照上述 SDK 安装说明操作,然后创建一个新项目,并选择 iOS App template(iOS 应用模板)。注意:在 11.7 版中,创建的是 Single View Application(单视图应用)。

现在,在应用的默认 ViewController 中添加或更新一些方法,即可创建并初始化 GMSMapView 的实例。

Swift

/*
 * Copyright 2020 Google Inc. All rights reserved.
 *
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
 * file except in compliance with the License. You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under
 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
 * ANY KIND, either express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */

import UIKit
import GoogleMaps

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // Create a GMSCameraPosition that tells the map to display the
        // coordinate -33.86,151.20 at zoom level 6.
        let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
        let mapView = GMSMapView.map(withFrame: self.view.frame, camera: camera)
        self.view.addSubview(mapView)

        // Creates a marker in the center of the map.
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
        marker.title = "Sydney"
        marker.snippet = "Australia"
        marker.map = mapView
  }
}

      

Objective-C

/*
* Copyright 2020 Google Inc. All rights reserved.
*
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
* ANY KIND, either express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

#import "ViewController.h"
#import <GoogleMaps/GoogleMaps.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
  // Do any additional setup after loading the view.
  // Create a GMSCameraPosition that tells the map to display the
  // coordinate -33.86,151.20 at zoom level 6.
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                          longitude:151.20
                                                               zoom:6];
  GMSMapView *mapView = [GMSMapView mapWithFrame:self.view.frame camera:camera];
  mapView.myLocationEnabled = YES;
  [self.view addSubview:mapView];

  // Creates a marker in the center of the map.
  GMSMarker *marker = [[GMSMarker alloc] init];
  marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
  marker.title = @"Sydney";
  marker.snippet = @"Australia";
  marker.map = mapView;
}

@end

      

运行您的应用。您应该会看到一个地图,位于地图中心的澳大利亚悉尼上方会显示一个标记。如果您看到了该标记,但看不到地图,请确认您已提供 API 密钥。

更多信息

署名要求

您必须在应用中的法律声明部分加入提供方说明文本。Google 建议以独立菜单项形式提供法律声明,或在“关于”菜单项中加入法律声明。

您可以通过调用 GMSServices.openSourceLicenseInfo() 获取提供方说明文本。

支持的平台

使用随高级计划分发的 Maps SDK for iOS 开发 iOS 应用需要以下工具:

  • Xcode 11.7 或更高版本。
  • iOS SDK 11.0 或更高版本。

利用此 SDK 开发的应用适用于 iOS 9.0 及更高版本。

比较版本

下表说明了使用标准 Maps SDK for iOS 和使用随高级计划分发的 SDK 之间的主要区别。

  标准 Maps SDK for iOS 高级计划
支持渠道 基于社区的支持服务 使用高级支持服务
条款 遵守 Google Maps Platform 服务条款 遵守 Google Maps Platform 高级计划使用条款

文档

关于 Maps SDK for iOS 的主要信息来源是我们网站上其他地方提供的开发者指南和参考文档。