为您的 iOS 应用启用 Geospatial API

配置应用的设置,以便其可以使用 Geospatial API

前提条件

在继续操作之前,请确保您了解基本 AR 概念以及如何配置 ARCore 会话

如果您想运行演示此处所述功能的示例应用,请参阅 适用于 iOS 的 ARCore Geospatial 快速入门

如需详细了解 Geospatial API,请参阅 Geospatial API 简介

如果您刚开始使用 ARCore 进行开发,请参阅使用入门,了解软件和硬件要求、前提条件以及特定于您所用平台的其他信息。

启用 ARCore API

在应用中使用 Visual Positioning System (VPS) 之前,您必须先在新建或现有的 Google Cloud 项目中启用 ARCore API。此服务负责托管、存储和解析地理空间锚点。

首选无密钥授权,但也支持 API 密钥授权。

将所需的库添加到您的应用

授权应用调用 ARCore API 后,您必须添加库才能在应用中启用地理空间功能。

更新应用的 Podfile,以添加 ARCore SDK 和支持的 iOS 版本。具体操作步骤如下:

  1. 将以下 platformpod 添加到项目的 Podfile

    platform :ios, '11.0'
    pod 'ARCore/Geospatial', '~> 1.46.0'
    

    如果您想支持 iOS 10,也可以指定 platform :ios, '10.0',但请注意,Geospatial API 仅在 iOS 11 及更高版本上才会在运行时运行。

  2. 打开一个终端窗口,然后从 Xcode 项目所在的文件夹运行 pod install

    这将生成一个 .xcworkspace 文件,您将使用此文件构建和运行应用。

请确保您的开发环境满足 Quickstart 中所述的 ARCore SDK 要求。

在会话配置中启用地理空间功能

检查设备兼容性

并非所有支持 ARCore 的设备都支持 Geospatial API,如快速入门中所述。

使用 GARSession.isGeospatialModeSupported: 检查设备,如下所示:

if (![self.garSession isGeospatialModeSupported:GARGeospatialModeEnabled]) {
  [self setErrorStatus:@"GARGeospatialModeEnabled is not supported on this device."];
  return;
}

GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
[self.garSession setConfiguration:configuration error:&error];
if (error) {
  [self setErrorStatus:[NSString stringWithFormat:@"Failed to configure GARSession: %d",
                                                  (int)error.code]];
  return;
}

在运行时向用户请求位置信息权限

您的应用必须先在运行时请求以下位置信息权限,然后才能配置会话:

检查设备当前位置的地理空间可用性

由于 Geospatial API 会结合使用 VPS 和 GPS 来确定地理空间转换,因此只要设备能够确定其位置,就可以使用该 API。在 GPS 精度较低的区域(例如室内空间和密集的城市环境)中,该 API 将依赖于 VPS 覆盖范围来生成高精度转换。在典型条件下,VPS 的定位精度预计为 5 米左右,旋转精度为 5 度。使用 GARSession.checkVPSAvailabilityAtCoordinate:completionHandler: 确定给定位置是否有 VPS 覆盖。

Geospatial API 还可在未覆盖 VPS 的区域使用。在天空中没有或几乎没有障碍物的室外环境中,GPS 可能就足以生成高精度的转换。

后续步骤